SciKit中的多级Logistic回归了解

时间:2016-04-09 22:38:44

标签: python machine-learning scikit-learn logistic-regression

我在为多类案件正确调用Scikit的Logistic回归方面遇到了麻烦。我正在使用lbgfs解算器,我确实将multi_class参数设置为multinomial。

我不清楚如何在拟合模型时传递真正的类标签。我假设它与随机森林分类器多类相似/相同,在那里传递[n_samples,m_classes]数据帧。但是,在执行此操作时,我收到数据形状不佳的错误。 ValueError:错误的输入形状(20,5) - 在这个小例子中,有5个类,20个样本。

在检查时,fit方法的文档说真值是作为[n_samples]传递的 - 它与我得到的错误相匹配 - 但是,我不知道如何训练模型有多个班级。所以,这是我的问题:如何将完整的类标签集传递给fit函数?

我无法在互联网上找到示例代码进行建模,也无法在StackOverflow上找到这个问题..但我确信有人必须知道该怎么做!

在下面的代码中,train_features = [n_samples,nn_features],truth_train = [n_samples,m_classes]

clf = LogisticRegressionCV(class_weight='balanced', multi_class='multinomial', solver='lbfgs')
clf.fit(train_features, truth_train)
pred = clf.predict(test_features)

1 个答案:

答案 0 :(得分:14)

简而言之,您似乎混淆了术语多类多标记 http://scikit-learn.org/stable/modules/multiclass.html

  
      
  • 多类分类是指具有多个分类的分类任务   两个班;例如,分类可能是一组水果图像   橘子,苹果或梨。多类分类使得   假设每个样本都分配给一个且只有一个标签:a   水果既可以是苹果也可以是梨,但不能同时使用。
  •   

因此,数据为[n_samples, n_features],标签为[n_samples]

  
      
  • 多标签分类为每个样本分配一组目标   标签。这可以被认为是预测数据点的属性   不相互排斥的,例如与之相关的主题   一个文件。文本可能与宗教,政治,金融有关   或同时接受教育或不接受任何教育。
  •   

因此,数据为[n_samples, n_features],标签为[n_samples, n_labels]

而且你似乎在寻找多标签(对于多类标签应该是1-dim)。目前,在sklearn中,支持多标签的唯一方法是:决策树,随机森林,最近邻,岭回归。

如果您想学习不同模型的多标签问题,只需使用OneVsRestClassifier作为LogisticRegression周围的多标签包装

http://scikit-learn.org/stable/modules/generated/sklearn.multiclass.OneVsRestClassifier.html#sklearn.multiclass.OneVsRestClassifier