SciKit Learn中的多类逻辑回归

我在使用Scikit的逻辑回归进行多类情况时遇到了问题。我使用的是lbgfs求解器,并且已经将multi_class参数设置为multinomial。

我不清楚如何在拟合模型时传递真实类标签。我原本以为这与随机森林分类器的多类情况类似/相同,即传递[n_samples, m_classes]的数据框。然而,当我这样做时,我得到了一个错误,指出数据形状不正确。ValueError: bad input shape (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)

回答:

你似乎混淆了多类多标签这两个术语 http://scikit-learn.org/stable/modules/multiclass.html ,简而言之:

  • 多类分类意味着一个分类任务有超过两个类;例如,分类一组水果图片,这些水果可能是橙子、苹果或梨。多类分类假设每个样本只能分配给一个标签:一个水果可以是苹果或梨,但不能同时是两者。

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

  • 多标签分类为每个样本分配一组目标标签。这可以被认为是预测数据点的属性,这些属性不是互斥的,例如与文档相关的多个主题。一篇文本可能同时涉及宗教、政治、金融或教育,或者这些主题都不涉及。

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

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

如果你想用不同的模型学习多标签问题,只需使用OneVsRestClassifier作为逻辑回归的多标签包装器即可

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

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注