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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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