机器学习-1.0评价指标

本文详细介绍了机器学习中常见的评价指标,包括分类任务的准确率、精确率、召回率、F1分数、P-R曲线、ROC曲线及AUC,回归任务的MAE、MSE和R2分数,以及聚类任务的误差平方和。通过代码示例展示了如何计算这些指标,帮助读者深入理解模型性能评估。
摘要由CSDN通过智能技术生成

目录

1、描述评价指标

2、分类评价指标

3、回归评价指标

4、聚类评价指标

5、代码样例


1、描述评价指标

  1. 符号解释
    TP、FN、TN、FP的各自含义(其中T代表True,F代表False,P代表Positives,N代表Negatives)
  2. 假设结果
    图片

2、分类评价指标

  1. 正确率(Accuracy)
    正确率又称准确率,预测为真正例(TP)与真负例(TN)占总样例的比例
    计算公式:
    accuracy=\frac{TP+TN}{TP+TN+FP+FN}
    上表可知:TP+TN=70,S=100,则正确率A=70/100=0.7
    结论:正确率越高模型训练越好
  2. 精确率(Precision)
    精确率又称查准率,预测为真正例(TP)占真正例与伪真例(TP+FP)的百分比。
    计算公式:
    precision_{k}=\frac{TP}{TP+FP}
  3. 召回率(Recall)
    召回率又称为查全率,预测为真正例(TP)占真正例与伪负例(TP+FN)的百分比
    计算公式:
    recall_{k}=\frac{TP}{TP+FN}
  4. F1 Score
    精确率(Precision)和召回率(Recall)的调和平均数,最大为1,最小为0
    F_{1}=2\cdot \frac{precision\cdot recall}{precision+recall}
  5. P-R曲线(Precision-Recall Curve)
    P-R曲线又称为精确率(Precision)和召回率(Recall)变化的曲线
    如果取多个不同的阈值,就可以得到多组(R,P)。将这些坐标点(R,P)绘制在坐标上,然后将各坐标点用曲线连起来,即可得到PR曲线。
    图片
  6. ROC曲线

    真正率(TPR): 识别对了的正例(TP)占实际总正例的比例,实际计算值跟召回率相同。
    计算公式:TPR =TP/(TP+ FN)
    假正率(FPR): 识别错了的正例(FP)占实际总负例的比例。也可以说,误判的负例(实际是负例,没有判对)占实际总负例的比例。
    计算式如下:FPR =FP/(FP+ TN)
    以FPR为横轴,TPR为纵轴,绘制得到的曲线就是ROC曲线,一般来说,ROC曲线越靠近左上方越好
    图片
    结论:ROC曲线越光滑,过拟合程度越小。绿线分类模型的整体性能要优于红线分类模型。

  7. AUC面积
    被定义为 ROC曲线 下与坐标轴围成的面积,显然这个面积的数值不会大于1
  8. KS(Kolmogorov-Smirnov)
    KS统计量计算公式:KS = abs(FPR - TPR).max()

3、回归评价指标

  1. 平均绝对误差(MAE)
  2. 均方误差(MSE)
  3. 均方根误差
  4. R2拟合优度

    说明:R²最大值为1。R²的值越接近1,说明回归直线对观测值的拟合程度越好;反之,R²的值越小,说明回归直线对观测值的拟合程度越差。

4、聚类评价指标

640?wx_fmt=jpeg

误差平方和越小,聚类越准确 

5、代码样例

## 混淆矩阵
from sklearn.metrics import confusion_matrix
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 0]
print('混淆矩阵:', confusion_matrix(y_true, y_pred))

# 准确率(Accuracy)
from sklearn.metrics import accuracy_score

y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 0]
print('ACC:', accuracy_score(y_true, y_pred))

# 精确率(Precision)
# 召回率(Recall)
# F1-score
from sklearn import metrics

y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 0]
print('Precision', metrics.precision_score(y_true, y_pred))
print('Recall', metrics.recall_score(y_true, y_pred))
print('F1-score:', metrics.f1_score(y_true, y_pred))

# P-R曲线
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve

y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1]
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1]
precision, recall, thresholds = precision_recall_curve(y_true, y_pred)
plt.plot(precision, recall)

# ROC曲线
from sklearn.metrics import roc_curve

y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1]
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1]
FPR, TPR, thresholds = roc_curve(y_true, y_pred)
plt.title('ROC')
plt.plot(FPR, TPR, 'b')
plt.plot([0, 1], [0, 1], 'r--')
plt.ylabel('TPR')
plt.xlabel('FPR')

# AUC
import numpy as np
from sklearn.metrics import roc_auc_score

y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print('AUC socre:', roc_auc_score(y_true, y_scores))

# KS值 在实际操作时往往使用ROC曲线配合求出KS值
from sklearn.metrics import roc_curve

y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1]
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 1, 1]
FPR, TPR, thresholds = roc_curve(y_true, y_pred)
KS = abs(FPR - TPR).max()
print('KS值:', KS)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值