使用scikit训练逻辑回归学习多类分类

时间:2015-08-18 14:02:47

标签: python scikit-learn classification

根据scikit multiclass classification Logistic回归可以通过设置用于多类分类 multi_class =构造函数中的多项式。但这样做会产生错误:

代码:

text_clf = Pipeline([('vect', TfidfVectorizer()),('clf', LogisticRegression(multi_class = 'multinomial')),])
text_clf = text_clf.fit(X_train, Y_train)

错误:

ValueError:求解器liblinear不支持多项后端。

你能告诉我这里有什么问题吗?

注意:保持multi_class为空,即“ovr”工作正常,但它适合每个分类器的二进制模型,我也想尝试mutlinomial功能。

2 个答案:

答案 0 :(得分:14)

来自doc

  

目前,'multinomial'选项仅受'lbfgs'和'newton-cg'解算器的支持。

因此,您需要明确将solver设置为'newton-cg'或'lbfgs',因为默认解算器为'liblinear'

答案 1 :(得分:1)

您似乎没有提供求解器,并且默认情况下,求解器设置为不支持多类的“ liblinear ”。 根据sklearn版本0.20.1,“ newton-cg”,“ lbfgs”,“ sag”,“ saga”不受“ liblinear”支持,因此请按照以下代码更改LogisticRegression的实例创建 logReg = LogisticRegression(multi_class ='multinomial',求解器='newton-cg')

求解器必须是“ newton-cg”,“ lbfgs”,“ sag”,“ saga”中的任何一种,但不能保留