使用 scikit learn 训练逻辑回归进行多 class class 化

Training logistic regression using scikit learn for multi-class classification

根据 scikit multiclass classification 通过设置逻辑回归可以用于多classclass化 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" 工作正常,但它适合每个 classifier 和我的二进制模型也想尝试多项式特征。

来自doc

Currently the ‘multinomial’ option is supported only by the ‘lbfgs’ and ‘newton-cg’ solvers.

因此您需要将 solver 显式设置为 'newton-cg' 或 'lbfgs',因为默认求解器是 'liblinear'.

您似乎没有提供解算器,默认情况下解算器设置为不支持多 class 的“liblinear”。 根据 sklearn 版本 0.20.1,'newton-cg'、'lbfgs'、'sag'、'saga' 而不是 'liblinear' 支持 multiclass,因此请按照以下内容更改 LogisticRegression 的实例创建代码

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

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