Sklearn - 如何预测所有目标标签的概率

新手上路,请多包涵

我有一个带有目标变量的数据集,它可以有 7 个不同的标签。我的训练集中的每个样本只有一个目标变量标签。

对于每个样本,我想计算每个目标标签的概率。所以我的预测将包括每行 7 个概率。

在 sklearn 网站上,我阅读了有关多标签分类的内容,但这似乎不是我想要的。

我尝试了以下代码,但这只为每个样本提供了一个分类。

 from sklearn.multiclass import OneVsRestClassifier
clf = OneVsRestClassifier(DecisionTreeClassifier())
clf.fit(X_train, y_train)
pred = clf.predict(X_test)

有人对此有什么建议吗?谢谢!

原文由 Bert Carremans 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 763
2 个回答

您只需删除 OneVsRestClassifer 并使用 predict_proba 方法 DecisionTreeClassifier 。您可以执行以下操作:

 clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
pred = clf.predict_proba(X_test)

这将为您提供 7 个可能类别中每个类别的概率。

希望有帮助!

原文由 Abhinav Arora 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以尝试使用 scikit- multilearn - 处理多标签分类的 sklearn 扩展。如果您的标签没有过度相关,您可以为每个标签训练一个分类器并获得所有预测 - 尝试(在 pip install scikit-multilearn 之后):

 from skmultilearn.problem_transform import BinaryRelevance
classifier = BinaryRelevance(classifier = DecisionTreeClassifier())

# train
classifier.fit(X_train, y_train)

# predict
predictions = classifier.predict(X_test)

在您的情况下,预测将包含一个大小为 (n_samples, n_labels) 的稀疏矩阵 - n_labels = 7,每列包含所有样本的每个标签的预测。

如果您的标签是相关的,您可能需要更复杂的方法来进行多标签分类。

免责声明:我是 scikit-multilearn 的作者,请随时提出更多问题。

原文由 niedakh 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题