gpt4 book ai didi

machine-learning - 无法弄清楚 scikit-learn 中 precision_recall_fscore_support 返回值中的类顺序

转载 作者:行者123 更新时间:2023-11-30 09:36:01 28 4
gpt4 key购买 nike

经过多次尝试,我无法理解如何从 precision_recall_fscore_support 恢复类指标。返回值。

例如,考虑到这个经典的学习环境:

target_names = set(y)
y = [target_names.index(x) for x in y]
X_train, X_test, y_train, y_test = train_test_split(X, y)

# Some classification ...

y_pred = clf.predict(X_test)
precision, recall, f1, support = precision_recall_fscore_support(y_test, y_pred)

这里,len(set(y_test)) == len(support)所以我想象y_test中存在的所有类都存在于返回值中。但我找不到它们的排序方式,因此我可以恢复哪些指标对应于哪个类。

感谢您的帮助!

最佳答案

标签按排序顺序排列。 Quoting the documentation :-

By default, all labels in y_true and y_pred are used in sorted order

类的顺序由cision_recall_fscore_support中的labels参数决定。如果未提供任何内容,则默认行为是收集 y_pred 和 y_true 中的所有类并按排序顺序排列。

文档示例:

y_true = np.array(['cat', 'pig', 'dog', 'cat', 'dog', 'pig'])
y_pred = np.array(['cat', 'dog', 'pig', 'cat', 'cat', 'dog'])

precision_recall_fscore_support(y_true, y_pred)

输出:

(array([ 0.66666667,  0.        ,  0.        ]),
array([ 1., 0., 0.]),
array([ 0.8, 0. , 0. ]),
array([2, 2, 2]))

上面的元组有 4 个数组(精度、召回率、f_score 和支持度),每个数组有 3 个元素,“cat”、“dog”和“pig”各一个。 (您可以自己计算出指标是根据排序类“猫”、“狗”、“ pig ”排列的)。

即使您更改此处标签的顺序:-

y_true = np.array(['cat', 'dog', 'pig', 'cat', 'dog', 'pig'])
y_pred = np.array(['cat', 'pig', 'dog', 'cat', 'cat', 'dog'])

输出将是相同的:-

(array([ 0.66666667,  0.        ,  0.        ]),
array([ 1., 0., 0.]),
array([ 0.8, 0. , 0. ]),
array([2, 2, 2]))

如果 y 具有数值,也会发生同样的情况。

希望能消除您的疑虑。如有任何疑问,请随时提出。

关于machine-learning - 无法弄清楚 scikit-learn 中 precision_recall_fscore_support 返回值中的类顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42370201/

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