使用scikit learn训练多类别分类的逻辑回归

9

根据Scikit多分类,逻辑回归可以通过在构造函数中设置multi_class=multinomial来用于多类分类。但是这样做会导致错误:

代码:

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

错误:

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

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

注意:将multi_class保留为空即“ovr”可以正常工作,但它为每个分类器拟合一个二进制模型,我想尝试多项式特征。

2个回答

16

根据文档,目前只有 'lbfgs' 和 'newton-cg' 能够支持 'multinomial' 选项。

因此,您需要明确将 solver 设置为 'newton-cg''lbfgs',因为默认的 solver 是 'liblinear'


3

看起来您没有提供求解器, 默认情况下求解器设置为 'liblinear',该求解器不支持多类别分类。 根据sklearn版本0.20.1,多类别分类由'newton-cg'、'lbfgs'、'sag'、'saga'支持,而不是由'liblinear'支持,因此请根据以下代码更改逻辑回归的实例创建方式。

logReg = LogisticRegression(multi_class='multinomial', solver='newton-cg')

solver必须是“newton-cg”、“lbfgs”、“sag”、“saga”中的任何一种,但不能留空


你的回答与3年前已经回答过的有何不同? - Abhishek
添加了精确的代码片段,并增强了支持sag和saga这两个求解器。如果这两个求解器对于训练模型使用的相关数据带来任何改进,它们可能有助于提高模型的性能和准确性。 - Abhishek Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接