scikit-learn 在多标签分类中计算 F1
Posted
技术标签:
【中文标题】scikit-learn 在多标签分类中计算 F1【英文标题】:scikit-learn calculate F1 in multilabel classification 【发布时间】:2016-01-24 10:16:38 【问题描述】:我正在尝试在multi-label classification 中使用 scikit 计算宏 F1
from sklearn.metrics import f1_score
y_true = [[1,2,3]]
y_pred = [[1,2,3]]
print f1_score(y_true, y_pred, average='macro')
但是它失败并显示错误消息
ValueError: multiclass-multioutput is not supported
如何计算具有多标签分类的宏 F1?
【问题讨论】:
【参考方案1】:在当前的 scikit-learn 版本中,您的代码会导致以下警告:
DeprecationWarning: Direct support for sequence of sequences multilabel
representation will be unavailable from version 0.17. Use
sklearn.preprocessing.MultiLabelBinarizer to convert to a label
indicator representation.
按照此建议,您可以使用sklearn.preprocessing.MultiLabelBinarizer
将此多标签类转换为f1_score
接受的形式。例如:
from sklearn.preprocessing import MultiLabelBinarizer
from sklearn.metrics import f1_score
y_true = [[1,2,3]]
y_pred = [[1,2,3]]
m = MultiLabelBinarizer().fit(y_true)
f1_score(m.transform(y_true),
m.transform(y_pred),
average='macro')
# 1.0
【讨论】:
想知道如何解决多元回归问题。以上是关于scikit-learn 在多标签分类中计算 F1的主要内容,如果未能解决你的问题,请参考以下文章
BERT模型在多类别文本分类时的precision, recall, f1值的计算
scikit-learn机器学习逻辑回归进行二分类(垃圾邮件分类),二分类性能指标,画ROC曲线,计算acc,recall,presicion,f1
如何在 scikit-learn 的分类问题中为 F1 分数做 GridSearchCV?
如何告诉 scikit-learn 为哪个标签给出了 F-1/precision/recall 分数(在二进制分类中)?