vat*_*tob 2 python precision python-2.7 scikit-learn precision-recall
我有两个列表:“A”是列表列表,每个项目都包含预测标签列表“B”是列表列表,每个项目都包含真实标签
我正在尝试在迭代中使用 scikit-learn 计算精度、召回率、f 分数,A[i] 与 B[i] 相比,但它说
ValueError:发现输入变量的样本数量不一致:[3, 2]
我发现了一些类似的主题,但没有答案Computing precision and recall for两组关键字在NLTK和Scikit中针对不同大小的集合
和size() 必须保持相同以保证精度和召回率y_true。和y_pred的大小可能不同。检查和的文档。请注意,您需要将有效值传递给这些方法中的参数。y_true[i]y_pred[i]precision_score()recall_score()average
另请查看此页面以获取有关多标签分类评分技术的更多信息。
编辑:添加了一些代码,从评论中获取示例数据。
首先,您需要对y_true数据y_pred中的所有可用标签进行 one-hot 编码。
from sklearn.preprocessing import MultiLabelBinarizer
from sklearn.metrics import recall_score, precision_score
A=[['a','b','c'],['d','e','f','g']]
B=[['a','b'],['d','f','g']]
multibinarizer = MultiLabelBinarizer()
A_new = multi.fit(A).transform(A)
B_new = multi.transform(B)
#average = 'valid strategy for multilabel
precision_score(A_new,B_new,average='samples')
#output -> 1.0
recall_score(A_new, B_new, average='samples')
#output -> 0.70833333333333326
Run Code Online (Sandbox Code Playgroud)