【sklearn第二十六讲】模型评价

本文介绍了scikit-learn库中模型评价的多种方法,包括分数参数、分类测度等。详细讲解了准确分数、混淆矩阵、分类报告和ROC曲线的概念与应用,并提供了相关示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)

scikit-learn有三种不同的API评价一个模型的预测质量。

  • 估计量分数方法:估计量的score方法,对于设计解决的问题提供了一个默认的评价准则。

  • 分数参数:使用交叉验证的模型评价工具依赖一个内部的打分策略。

  • 测度函数:metrics模块提供评价模型预测误差的函数。

分数参数:定义模型评价规则

普遍的情况:预定义值

对于大多数普遍使用的例子,你能够使用scoring参数定义一个分数对象,下表列出了所有可能的值。所有分数对象都遵守的规则是:返回值越高越好。
这里写图片描述
用法例子:
这里写图片描述

从测度函数定义分数策略

sklearn.metrics模块提供一套简单的函数,提供给定真实情况下的预测误差。

  • _score编辑的函数,返回值越大越好。

  • _error or _loss编辑的函数,返回值越小越好。如果使用make_scorer转换成一个分数对象,将参数greater_is_be

### sklearn 中分类模型评价指标 #### 准确率 (Accuracy) 准确率是指预测正确的样本占总样本的比例。对于二元分类问题,可以通过 `sklearn.metrics.accuracy_score` 来计算。 ```python from sklearn.metrics import accuracy_score y_true = [0, 1, 1, 0, 1] y_pred = [0, 1, 0, 0, 1] accuracy = accuracy_score(y_true, y_pred) print(f'Accuracy: {accuracy}') ``` 此方法适用于数据集中正负样本相对平衡的情况[^3]。 #### 精确率 (Precision) 精确率衡量的是预测为正类的样本中有多少是真正的正类。可以利用 `sklearn.metrics.precision_score` 计算该值: ```python from sklearn.metrics import precision_score precision = precision_score(y_true, y_pred) print(f'Precision: {precision}') ``` 当误判正类样本代价较高时应优先考虑这个度量标准。 #### 召回率 (Recall) 召回率指的是实际为正类的样本中被正确识别出来的比例。使用 `sklearn.metrics.recall_score` 获取这一数值: ```python from sklearn.metrics import recall_score recall = recall_score(y_true, y_pred) print(f'Recall: {recall}') ``` 在不允许有太多漏诊情况发生的应用场景下非常重要。 #### F1 分数 (F1 Score) F1 分数综合考量了精确率和召回率的表现,特别适合处理类别分布不均的数据集。借助于 `sklearn.metrics.f1_score` 实现其计算过程如下所示: ```python from sklearn.metrics import f1_score f1 = f1_score(y_true, y_pred) print(f'F1 score: {f1}') ``` 它能够在两者间找到较好的折衷方案。 #### ROC 曲线与 AUC 值 接收者操作特征曲线(ROC)展示了不同阈值设置下真阳性率(TPR)相对于假阳性率(FPR)的变化趋势;曲线下方区域即为AUC(Area Under Curve),反映了整体区分能力的好坏程度。可通过 `sklearn.metrics.roc_curve` 和 `sklearn.metrics.auc` 得到这两个参数的具体表现形式: ```python import numpy as np from sklearn.metrics import roc_curve, auc fpr, tpr, thresholds = roc_curve(y_true, scores) auc_value = auc(fpr, tpr) plt.plot(fpr, tpr, label=f'AUC={np.round(auc_value, decimals=2)}') plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver Operating Characteristic Curve') plt.legend() plt.show() ``` 其中`scores`代表每个测试实例属于正类别的概率估计值[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值