【问题标题】:Training logistic regression using scikit learn for multi-class classification使用 scikit learn 训练逻辑回归进行多类分类
【发布时间】: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”工作正常,但它适合每个分类器的二进制模型,我也想尝试多项式特征。

【问题讨论】:

    标签: python scikit-learn classification


    【解决方案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'

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 2016-07-31
      • 2021-01-09
      • 2016-06-17
      • 2018-05-19
      • 2016-02-01
      • 2018-01-14
      • 2020-01-04
      • 2016-12-16
      相关资源
      最近更新 更多