【发布时间】:2026-01-25 12:10:01
【问题描述】:
我想在 python 中实现 F-measure 度量,以便处理预测值的多类。
实际上,预测值 y_pred 是多类的,校正值是一类。
例子:
y_pred = [[11,12], 12, 12, [11,12],...]
y_true = [11, 12, 11, 12,...]
在这种情况下,我如何计算 F 度量?以及如何实现?
我用两个文件file1.csv(包括所有预测类,每行可以包含多个类)和file2.csv(包括所有校正值,每行包含一个)测试了以下代码(创建于https://stats.stackexchange.com/questions/21551/how-to-compute-precision-recall-for-multiclass-multilabel-classification)唯一的类):
import pandas as pd
def precision(y_true, y_pred):
i = set(y_true).intersection(y_pred)
len1 = len(y_pred)
if len1 == 0:
return 0
else:
return len(i) / len1
def recall(y_true, y_pred):
i = set(y_true).intersection(y_pred)
return len(i) / len(y_true)
def f1(y_true, y_pred):
p = precision(y_true, y_pred)
r = recall(y_true, y_pred)
if p + r == 0:
return 0
else:
return 2 * (p * r) / (p + r)
if __name__ == '__main__':
y_pred_df = pd.read_csv('file1.csv', skipinitialspace=True, sep='\t', header=None)
y_pred = y_pred_df.values
y_true_df = pd.read_csv('file2.csv', header=None)
y_true = y_true_df.values
print(f1(y_true[:,0], y_pred[:,0]))
上面的代码不起作用。
在我的情况下如何实施 F-measure?
非常感谢,
【问题讨论】:
-
从我的评论中得到答案
-
你能说一下,具体是什么不起作用?有错误信息吗?结果有错吗?你的数据集是什么样的?
标签: python scikit-learn metrics