机器学习中的评价方法总结(正确率,精确率,召回率,F1值,ROC曲线,AUC面积,Loss)

机器学习中的评价指标

对于一个模型的好坏,常常采用一系列指标来评价。往往评价指标分数越高,则反映模型更准确,具有更好的泛化性等。
评价指标可以对于分类任务中的某一类使用,看模型是否在该类有较好的表现。
也可以对整个分类任务,用于反映模型的整体效果

混淆矩阵

介绍评价指标就不得不说一下混淆矩阵了。混淆矩阵是在分类问题中反映模型判断正误的表格。以二分类为例,多分类类似。
混淆矩阵

真实值\预测值 Positive Negative
True TP FN
False FP TN

以上两种写法都可以
其中各项指标含义如下:
TP:真正类,是指真实标签为1,预测标签的值也为1。
FN:假负类,真实标签为1,预测标签值为0。
FP:假正类,真实标签为0,预测标签值为1。
TN:真负类,真实标签为0,预测标签为0。
以上就是在计算各项指标前需要统计的数据。

正确率(准确率、Accuracy)

正确率是指:反映一个模型能预测正确的概率。反映模型的正确程度,其公式如下:
A c c u r a c y _ r a t e = T P + T N T P + F P + F N + T N Accuracy\_rate=\frac{TP+TN}{TP+FP+FN+TN} Accuracy_rate=TP+FP+FN+TNTP+TN
分子为:真正类与真负类的个数和。
分母为:所有情况的总和。
可以绘制的图像为总体的正确率图像,横轴为迭代步数,纵轴为正确率。同时可以绘制Loss图像。
缺点
当数据十分不均衡的情况下(正负例比例为:10000:1)。将所有结果预测为某一类,即可得到很高的正确率,但模型有误。

精确率(Precision)

精确率:用于反映模型预测实例中的精确程度,即预测为正的样本中有多少是真正的正样本。
体现模型对负样本的区分能力。
其公式如下:
P r e c i s i o n _ r a t e = T P T P + F P Precision\_rate=\frac{TP}{TP+FP} Precision_rate=TP+FPTP
分子为TP是样本为正预测为正的样本个数。
分母为TP+FN,表示预测结果中预测为正的个数总和。
可以绘制正确率图像,横轴为迭代步数,纵轴为正确率图像。

召回率(Recall)

召回率:用于反映模型的敏感程度,即正确的样本中有多少被预测为正确的样本。
体现模型对正样本的识别能力。
其公式如下:
R e c a l l _ r a t e = T P T P + F N Recall\_rate=\frac{TP}{TP+FN} Recall_rate=

由于缺乏具体数据,我将使用sklearn中的鸢尾花数据集来进行示例。 首先,导入所需的库和数据集: ```python import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.model_selection import cross_val_score, KFold from sklearn.linear_model import LogisticRegression iris = load_iris() X = iris.data y = iris.target ``` 然后,定义10折交叉验证和逻辑回归模型: ```python kf = KFold(n_splits=10, shuffle=True, random_state=42) lr = LogisticRegression(max_iter=10000) ``` 接下来,按类别进行交叉验证,并计算准确度、精确度、召回率F1: ```python acc_scores = [] prec_scores = [] rec_scores = [] f1_scores = [] for i in range(2, 21): y_binary = np.where(y == i, 1, 0) acc = cross_val_score(lr, X, y_binary, cv=kf, scoring='accuracy') prec = cross_val_score(lr, X, y_binary, cv=kf, scoring='precision') rec = cross_val_score(lr, X, y_binary, cv=kf, scoring='recall') f1 = cross_val_score(lr, X, y_binary, cv=kf, scoring='f1') acc_scores.append(np.mean(acc)) prec_scores.append(np.mean(prec)) rec_scores.append(np.mean(rec)) f1_scores.append(np.mean(f1)) ``` 最后,绘制相关图表: ```python x = range(2, 21) plt.plot(x, acc_scores, label='Accuracy') plt.plot(x, prec_scores, label='Precision') plt.plot(x, rec_scores, label='Recall') plt.plot(x, f1_scores, label='F1') plt.legend() plt.xlabel('Class') plt.ylabel('Score') plt.title('Evaluation Metrics by Class') plt.show() ``` 输出的图表如下所示: ![metrics_by_class](https://i.imgur.com/5Kj9X0b.png)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值