我在正确调用 Scikit 的多类案例的逻辑回归时遇到了麻烦。我正在使用 lbgfs 求解器,并且确实将 multi_class 参数设置为多项式。

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

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

我一直无法在 Internet 上找到示例代码来建模,也无法在 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)

最佳答案

你似乎混淆了术语 multiclass multilabel http://scikit-learn.org/stable/modules/multiclass.html ,简而言之:



因此数据是 [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

关于python - SciKit Learn 中的多类逻辑回归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36523558/

10-09 08:49