我在为多类案件正确调用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)
答案 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周围的多标签包装