分类模型评估指标及ROC曲线和PR曲线

目录

一、介绍

二、一些常见的分类模型评估指标

    1、准确率(Accuracy)

2、精确率(Precision)

3、召回率(Recall)或真正例率(TPR)

4、F1值(F1 Score)

5、AUC-ROC(Area Under the Curve - Receiver Operating Characteristic)

6、混淆矩阵(Confusion Matrix)

三、简单的案例应用

1、代码实现:

2、运行结果:

四、实验总结

1、ROC曲线:

2、PR曲线:

3、总体分析:


一、介绍

  

分类模型评估指标是用于衡量分类模型性能的一系列指标,它们可以帮助我们理解模型在不同情况下的表现,并指导我们如何改进模型。

二、一些常见的分类模型评估指标

    1、准确率(Accuracy)


 定义:分类正确的样本数占总样本数的比例。
  公式:

  适用范围:当各类别样本数量相对平衡时较为有效。


2、精确率(Precision)


  定义:预测为正例的样本中真正为正例的比例。
  公式:
  适用范围:当关注预测为正例的样本中有多少是真正正例时,例如在垃圾邮件检测中。


3、召回率(Recall)或真正例率(TPR)


  定义:预测为正例的真实正例占所有真实正例的比例。
  公式:
  适用范围:当关注找到所有真正正例的能力时,例如在疾病检测中。


4、F1值(F1 Score)


  定义:精确率和召回率的调和平均值。
  公式:
  适用范围:当需要综合考虑精确率和召回率时。


5、AUC-ROC(Area Under the Curve - Receiver Operating Characteristic)


  定义:ROC曲线下的面积,ROC曲线是真正例率与假正例率的关系曲线。
  适用范围:当关注模型在不同分类阈值下的性能时,尤其适用于类别不平衡的情况。

6、混淆矩阵(Confusion Matrix)


  定义:通过统计分类模型预测类别与实际类别之间的各类情况,展示在矩阵中。
  内容:包括真正例(TP)、假正例(FP)、真反例(TN)和假反例(FN)。
  适用范围:提供分类模型性能的详细分析。

真实正例

真实负例

预测正例

TP

FP

预测负例 

FN

TN

三、简单的案例应用

1、代码实现:
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import roc_curve, auc, precision_recall_curve
import matplotlib.pyplot as plt

# 生成模拟数据集
X, y = make_classification(n_samples=1000, n_features=20, n_classes=2, random_state=42)

# 分割数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 设置不同的k值
k_values = [3, 5, 7, 9, 11]

# 初始化ROC和PR曲线的数据
roc_data = {}
pr_data = {}

# 对每个k值进行训练和评估
for k in k_values:
    model = KNeighborsClassifier(n_neighbors=k)
    model.fit(X_train, y_train)
    y_pred_prob = model.predict_proba(X_test)[:, 1]

    # 计算ROC曲线和AUC
    fpr, tpr, _ = roc_curve(y_test, y_pred_prob)
    roc_auc = auc(fpr, tpr)
    roc_data[k] = (fpr, tpr, roc_auc)

    # 计算PR曲线
    precision, recall, _ = precision_recall_curve(y_test, y_pred_prob)
    pr_auc = auc(recall, precision)
    pr_data[k] = (precision, recall, pr_auc)

# 绘制ROC曲线
plt.figure(figsize=(12, 6))
for k, (fpr, tpr, roc_auc) in roc_data.items():
    plt.subplot(1, 2, 1)
    plt.plot(fpr, tpr, lw=2, label=f'k={k}, ROC curve (area = {roc_auc:.2f})')

plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve for Different k Values')
plt.legend(loc="lower right")

# 绘制PR曲线
for k, (precision, recall, pr_auc) in pr_data.items():
    plt.subplot(1, 2, 2)
    plt.plot(recall, precision, lw=2, label=f'k={k}, PR curve (area = {pr_auc:.2f})')

plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.title('Precision-Recall Curve for Different k Values')
plt.legend(loc="upper right")

# 显示图像
plt.tight_layout()
plt.show()
2、运行结果:

四、实验总结

1、ROC曲线:

ROC曲线下的面积(AUC)是评估模型性能的一个重要指标,其值越接近1表示模型性能越好。在图中,我们可以看到随着k值的增加,ROC曲线下的面积(AUC)先增加后减少。这表明存在一个最优的k值,使得模型在测试集上的性能最佳。不同的k值会导致模型的正例识别率和负例识别率发生变化,因此ROC曲线也会相应地调整。

2、PR曲线:

PR曲线下的面积(PR AUC)同样可以用来评估模型性能。从图中可以看出,随着k值的增加,PR曲线下的面积(PR AUC)先增加后减少。这与ROC曲线下的面积(AUC)的变化趋势一致,说明PR曲线也反映了模型的性能随着k值的变化而变化。PR曲线关注的是精确率和召回率之间的关系,可以帮助我们理解模型在不同召回率下的精确率表现。

3、总体分析:

  综合ROC曲线和PR曲线,我们可以得出结论:在k-NN分类器中,存在一个最优的k值,使得模型在测试集上的性能最佳。不同的k值会导致模型的正例识别率和负例识别率发生变化,从而影响ROC曲线和PR曲线。通过比较不同k值下的ROC曲线和PR曲线,我们可以选择一个最佳的k值,使得模型在测试集上的性能最佳。综上所述,通过绘制和分析ROC曲线和PR曲线,我们可以全面评估k-NN分类器的性能,并选择最佳的k值。这对于实际应用中优化模型性能和选择合适的参数具有重要意义。

  • 27
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ROC曲线(Receiver Operating Characteristic Curve)和PR曲线Precision-Recall Curve)是在二分类问题中常用的评估模型性能的工具,它们有一些区别和特点。 1. 目标不同: - ROC曲线关注的是真正例率(True Positive Rate,即召回率)与假正例率(False Positive Rate)之间的权衡。ROC曲线展示了在不同阈值下,分类器的敏感性和特异性之间的关系。 - PR曲线则关注的是精确率(Precision)与召回率(Recall)之间的权衡。PR曲线展示了在不同阈值下,分类器的预测准确性和查全率之间的关系。 2. 数据分布不平衡时的表现: - ROC曲线对于数据分布不平衡的情况下相对稳定,因为它使用了假正例率作为横轴,而假正例率不受真实负例数量的影响。 - PR曲线在数据分布不平衡时更能准确地反映分类器的性能,因为它使用了精确率作为纵轴,能够展示在正例中的正确预测比例。 3. 敏感性不同: - ROC曲线能够展示分类器在整个概率范围内的性能,对于不同的阈值都可以进行评估。 - PR曲线则更关注分类器在高概率(高置信度)区域的性能,对于低概率的预测结果较为敏感。 总而言之,ROC曲线主要用于评估分类器的整体性能,特别是在样本不平衡的情况下,而PR曲线则更适用于评估分类器在正例预测方面的性能。根据具体问题和需求,选择合适的曲线进行模型性能评估

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值