gpt4 book ai didi

python - 当 y_pred 和 y_true 具有不同大小时的 precision 、 recall 、 f 分数

转载 作者:行者123 更新时间:2023-12-01 03:19:58 25 4
gpt4 key购买 nike

我有两个列表:“A”是列表的列表,每个项目包含预测标签的列表“B”是列表的列表,每个项目都包含真正的标签

我正在尝试在迭代中使用 scikit-learn 计算精度、召回率、f 分数,A[i] 与 B[i] 相比,但它说

ValueError:发现输入变量的样本数量不一致:[3, 2]

我发现了一些类似的主题,但没有答案Computing precision and recall for two sets of keywords in NLTK and Scikit for sets of different sizes

最佳答案

为了保证精度和召回率,y_truey_pred size() 必须保持相同。 y_true[i]y_pred[i] 的大小可能不同。检查 precision_score() 的文档和 recall_score() 。请注意,您需要将有效值传递给这些方法中的 average 参数。

另请检查this page有关多标签分类评分技术的更多信息。

编辑:添加了一些代码,从评论中获取示例数据。

首先,您需要对数据中所有可用标签的 y_truey_pred 进行一次性编码。

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

关于python - 当 y_pred 和 y_true 具有不同大小时的 precision 、 recall 、 f 分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42022498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com