使用 scikit learn 训练逻辑回归进行多类分类
Posted
技术标签:
【中文标题】使用 scikit learn 训练逻辑回归进行多类分类【英文标题】:Training logistic regression using scikit learn for multi-class classification 【发布时间】:2015-11-11 12:30:21 【问题描述】:根据scikit multiclass classification 通过设置逻辑回归可以用于多类分类 multi_class=构造函数中的多项式。但是这样做会出错:
代码:
text_clf = Pipeline([('vect', TfidfVectorizer()),('clf', LogisticRegression(multi_class = 'multinomial')),])
text_clf = text_clf.fit(X_train, Y_train)
错误:
ValueError: Solver liblinear 不支持多项式后端。
你能告诉我这里出了什么问题吗?
注意: 将 multi_class 保持为空白,即“ovr”工作正常,但它适合每个分类器的二进制模型,我也想尝试多项式特征。
【问题讨论】:
【参考方案1】:您似乎没有提供求解器,默认情况下求解器设置为不支持多类的“liblinear”。 根据 sklearn 版本 0.20.1,“newton-cg”、“lbfgs”、“sag”、“saga”而不是“liblinear”支持多类,因此请按照以下代码更改 LogisticRegression 的实例创建
logReg = LogisticRegression(multi_class='multinomial', solver='newton-cg')
solver 必须是“newton-cg”、“lbfgs”、“sag”、“saga”中的任何东西,但不能离开
【讨论】:
您的回答与 3 年多前已经回答的内容有何不同? 添加了精确的代码 sn-p 以及增强功能以支持另外 2 个求解器,如 sag 和 saga。如果这两个求解器对用于训练模型的相关数据带来任何改进,可能有助于提高模型的性能和准确性【参考方案2】:来自doc:
目前,“多项式”选项仅受“lbfgs”和“newton-cg”求解器支持。
因此您需要将solver
显式设置为'newton-cg
' 或'lbfgs'
,因为默认求解器是'liblinear'
。
【讨论】:
以上是关于使用 scikit learn 训练逻辑回归进行多类分类的主要内容,如果未能解决你的问题,请参考以下文章
在 scikit learn 中训练具有不同特征维度的逻辑回归模型