首页 > 试题广场 >

计算分类模型的性能指标

[编程题]计算分类模型的性能指标
  • 热度指数:327 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
实现一个性能指标计算器函数,用于计算二分类问题的各种性能评估指标。该函数需要计算以下指标:

1. 混淆矩阵(Confusion Matrix)
2. 准确率(Accuracy)
3. F1分数(F1 Score)
4. 特异度(Specificity)
5. 负预测值(Negative Predictive Value)

这些指标在机器学习中用于评估分类模型的性能,特别是在二分类问题中。

输入描述:
第一行输入实际类别标签列表(1表示正类,0表示负类)。
第二行输入模型预测的类别标签列表(1表示正类,0表示负类)。


输出描述:
返回一个包含以下五个元素的元组:
1. confusion_matrix:2×2的混淆矩阵,格式为[[TN, FP], [FN, TP]]
2. accuracy:模型的准确率(保留3位小数)
3. f1_score:F1分数(保留3位小数)
4. specificity:特异度(保留3位小数)
5. negative_predictive_value:负预测值(保留3位小数)
示例1

输入

[1, 0, 1, 1, 0, 1]
[1, 0, 1, 0, 0, 1]

输出

([[3, 1], [0, 2]], 0.833, 0.857, 1.0, 0.667)

备注:
1. Python3对应的输入、输出已给出,您只用实现核心功能函数即可。
2. 支持numpy、scipy、pandas、scikit-learn库。
import numpy as np
def performance_metrics(actual: list[int], predicted: list[int]) -> tuple:
	# Implement your code here
    actual=np.array(actual)
    size=len(actual)
   
    predicted=np.array(predicted[:size])
    TP=np.sum((actual==1)&(predicted==1))
    TN=np.sum((actual==0)&(predicted==0))
    FP=np.sum((actual==0)&(predicted==1))
    FN=np.sum((actual==1)&(predicted==0))
    confusion_matrix=[[TP,FN],[FP,TN]]
    accuracy=(TP+TN)/(TP+TN+FP+FN)
    f1=2*TP/(2*TP+FP+FN)
    specificity=TN/(TN+FP)
    negativePredictive=TN/(TN+FN)
    return confusion_matrix, round(accuracy, 3), round(f1, 3), round(specificity, 3), round(negativePredictive, 3)


if __name__ == "__main__":
    actual = eval(input())
    predicted = eval(input())
    print(performance_metrics(actual, predicted))
第二个用例两个数组长度不一样
发表于 2025-11-28 17:43:32 回复(0)
题干confusion_matrix的顺序写错了,不是[[TN, FP], [FN, TP]],应该是[[TP, FN], [FP, TN]]
发表于 2025-09-06 10:46:07 回复(0)