Sklearn - 如何预测所有目标标签的概率
Sklearn - How to predict probability for all target labels
我有一个数据集,其目标变量可以有 7 个不同的标签。我的训练集中的每个样本只有一个目标变量标签。
对于每个样本,我想计算每个目标标签的概率。所以我的预测将包含每行 7 个概率。
我在sklearn网站上看到了多标签分类,但这似乎不是我想要的。
我尝试了以下代码,但这只为每个样本提供了一个分类。
from sklearn.multiclass import OneVsRestClassifier
clf = OneVsRestClassifier(DecisionTreeClassifier())
clf.fit(X_train, y_train)
pred = clf.predict(X_test)
有人对此有什么建议吗?谢谢!
您只需删除 OneVsRestClassifer
并使用 predict_proba
method of the DecisionTreeClassifier
即可。您可以执行以下操作:
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
pred = clf.predict_proba(X_test)
这将为您提供 7 种可能 类 中每一种的概率。
希望对您有所帮助!
您可以尝试使用 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 的作者,欢迎提出更多问题。
如果您坚持使用 OneVsRestClassifer
,那么您也可以调用 predict_proba(X_test)
,因为 OneVsRestClassifer
也支持它。
例如:
from sklearn.multiclass import OneVsRestClassifier
clf = OneVsRestClassifier(DecisionTreeClassifier())
clf.fit(X_train, y_train)
pred = clf.predict_proba(X_test)
您获得结果的标签顺序可在以下位置找到:
clf.classes_
我有一个数据集,其目标变量可以有 7 个不同的标签。我的训练集中的每个样本只有一个目标变量标签。
对于每个样本,我想计算每个目标标签的概率。所以我的预测将包含每行 7 个概率。
我在sklearn网站上看到了多标签分类,但这似乎不是我想要的。
我尝试了以下代码,但这只为每个样本提供了一个分类。
from sklearn.multiclass import OneVsRestClassifier
clf = OneVsRestClassifier(DecisionTreeClassifier())
clf.fit(X_train, y_train)
pred = clf.predict(X_test)
有人对此有什么建议吗?谢谢!
您只需删除 OneVsRestClassifer
并使用 predict_proba
method of the DecisionTreeClassifier
即可。您可以执行以下操作:
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
pred = clf.predict_proba(X_test)
这将为您提供 7 种可能 类 中每一种的概率。
希望对您有所帮助!
您可以尝试使用 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 的作者,欢迎提出更多问题。
如果您坚持使用 OneVsRestClassifer
,那么您也可以调用 predict_proba(X_test)
,因为 OneVsRestClassifer
也支持它。
例如:
from sklearn.multiclass import OneVsRestClassifier
clf = OneVsRestClassifier(DecisionTreeClassifier())
clf.fit(X_train, y_train)
pred = clf.predict_proba(X_test)
您获得结果的标签顺序可在以下位置找到:
clf.classes_