首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
4.1 分类变量
4.1.1 One-Hot 编码(虚拟变量)
4.1.2 数字可以编码分类变量
4.2 分箱、离散化、线性模型与树
4.3 交互特征与多项式特征
4.4 单变量非线性变换
4.5 自动化特征选择
4.5.1 单变量统计
4.5.2 基于模型的特征选择
4.5.3 迭代特征选择
4.6 利用专家知识
5.1 交叉验证
5.1.1 scikit-learn 中的交叉验证
5.1.2 交叉验证的优点
5.1.3 分层k 折交叉验证和其他策略
5.2 网格搜索
5.2.1 简单网格搜索
5.2.2 参数过拟合的风险与验证集
5.2.3 带交叉验证的网格搜索
5.3 评估指标与评分
5.3.1 牢记目标
5.3.2 二分类指标
5.3.3 多分类指标
5.3.4 回归指标
5.3.5 在模型选择中使用评估指标
6.1 用预处理进行参数选择
6.2 构建管道
6.3 在网格搜索中使用管道
6.4 通用的管道接口
6.4.1 用make_pipeline 方便地创建管道
6.4.2 访问步骤属性
6.4.3 访问网格搜索管道中的属性
6.5 网格搜索预处理步骤与模型参数
6.6 网格搜索选择使用哪个模型
7.1 用字符串表示的数据类型
7.2 示例应用:电影评论的情感分析
7.3 将文本数据表示为词袋
7.3.1 将词袋应用于玩具数据集
7.3.2 将词袋应用于电影评论
7.4 停用词
7.5 用tf-idf 缩放数据
7.6 研究模型系数
7.7 多个单词的词袋(n元分词)
7.8 分词、词干提取与词形还原
7.9 主题建模与文档聚类
8.1 处理机器学习问题
8.2 从原型到生产
8.3 测试生产系统
8.4 构建你自己的估计器
8.5 下一步怎么走
8.5.1 理论
8.5.2 其他机器学习框架和包
8.5.3 排序、推荐系统与其他学习类型
8.5.4 概率建模、推断与概率编程
8.5.5 神经网络
8.5.6 推广到更大的数据集
当前位置:
首页>>
技术小册>>
Python机器学习基础教程(下)
小册名称:Python机器学习基础教程(下)
### 5.3 评估指标与评分 在Python机器学习项目中,模型评估是至关重要的一环,它不仅帮助我们理解模型在当前数据集上的表现,还能指导我们进行模型选择、调参以及优化。本章“评估指标与评分”将深入探讨机器学习模型评估的核心概念,包括常见的评估指标、如何根据任务类型选择合适的评估方法,以及如何在Python中使用这些评估工具。 #### 5.3.1 引言 机器学习模型的性能评估依赖于一系列量化指标,这些指标能够客观地反映模型在特定任务上的表现。不同的任务类型(如分类、回归、聚类等)需要不同的评估指标。此外,即使是同一类型的任务,由于应用场景的不同,也可能需要关注不同的性能指标。因此,掌握并灵活运用各种评估指标是机器学习工程师必备的技能之一。 #### 5.3.2 分类任务评估指标 ##### 5.3.2.1 准确率(Accuracy) 准确率是最直观也是最常用的分类评估指标,它表示模型正确预测的样本数占总样本数的比例。然而,准确率在样本类别分布极不均衡时可能产生误导。 \[ \text{Accuracy} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{TN} + \text{FP} + \text{FN}} \] 其中,TP(True Positives)表示真正例,TN(True Negatives)表示真反例,FP(False Positives)表示假正例,FN(False Negatives)表示假反例。 ##### 5.3.2.2 精确率(Precision)与召回率(Recall) 精确率衡量的是模型预测为正例的样本中真正为正例的比例,而召回率则衡量的是所有真正为正例的样本中被模型正确预测出来的比例。 \[ \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} \] \[ \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} \] 精确率和召回率往往是一对矛盾体,提高一个指标往往会导致另一个指标的下降。F1分数是精确率和召回率的调和平均,用于综合评估这两个指标。 \[ \text{F1 Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} \] ##### 5.3.2.3 混淆矩阵(Confusion Matrix) 混淆矩阵是一个表格,用于展示模型预测结果与实际结果之间的对应关系,是评估分类模型性能的一种直观方式。通过混淆矩阵,我们可以计算出准确率、精确率、召回率等评估指标。 ##### 5.3.2.4 ROC曲线与AUC值 ROC曲线图是真正例率(TPR)对假正例率(FPR)的曲线图,用于评估分类模型在不同阈值下的性能。AUC值(Area Under the Curve)是ROC曲线下的面积,AUC值越大,表示模型性能越好。 \[ \text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}} \] \[ \text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}} \] #### 5.3.3 回归任务评估指标 ##### 5.3.3.1 均方误差(Mean Squared Error, MSE) 均方误差是回归任务中最常用的评估指标之一,它计算的是预测值与真实值之差的平方的平均值。MSE对异常值较为敏感。 \[ \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 \] 其中,$y_i$ 是真实值,$\hat{y}_i$ 是预测值,$n$ 是样本数量。 ##### 5.3.3.2 均方根误差(Root Mean Squared Error, RMSE) RMSE是MSE的平方根,与MSE在数值上成正比,但RMSE的单位与预测值的单位相同,因此更易于理解。 \[ \text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} \] ##### 5.3.3.3 平均绝对误差(Mean Absolute Error, MAE) MAE计算的是预测值与真实值之差的绝对值的平均值,相比MSE,MAE对异常值不那么敏感。 \[ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| \] #### 5.3.4 聚类任务评估指标 ##### 5.3.4.1 轮廓系数(Silhouette Coefficient) 轮廓系数结合了聚类的凝聚度和分离度,用于评估聚类效果的好坏。轮廓系数的值范围在-1到1之间,值越大表示聚类效果越好。 ##### 5.3.4.2 兰德指数(Rand Index, RI)与调整兰德指数(Adjusted Rand Index, ARI) 兰德指数衡量的是聚类结果与真实标签之间的一致性,其值范围在0到1之间,值越大表示聚类效果越好。调整兰德指数在兰德指数的基础上进行了调整,使其对聚类数目和样本大小更加鲁棒。 #### 5.3.5 Python中的评估工具 在Python中,我们可以使用`scikit-learn`库来方便地计算各种评估指标。`scikit-learn`提供了丰富的评估函数,如`accuracy_score`、`precision_score`、`recall_score`、`f1_score`、`mean_squared_error`、`mean_absolute_error`等,以及用于绘制ROC曲线和计算AUC值的`roc_curve`和`auc`函数。 以下是一个使用`scikit-learn`计算分类模型评估指标的简单示例: ```python from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score # 假设y_true是真实标签,y_pred是模型预测标签 y_true = [0, 1, 2, 2, 0] y_pred = [0, 0, 2, 2, 0] # 计算准确率 accuracy = accuracy_score(y_true, y_pred) print(f"Accuracy: {accuracy}") # 计算精确率、召回率和F1分数(平均='macro'表示对每类分别计算后取平均) precision = precision_score(y_true, y_pred, average='macro') recall = recall_score(y_true, y_pred, average='macro') f1 = f1_score(y_true, y_pred, average='macro') print(f"Precision: {precision}") print(f"Recall: {recall}") print(f"F1 Score: {f1}") ``` #### 5.3.6 评估指标的选择与应用 选择合适的评估指标对于准确评估模型性能至关重要。在选择评估指标时,需要考虑任务类型、数据特点以及业务需求。例如,在医疗诊断领域,由于误诊的代价远高于漏诊,因此可能更倾向于选择召回率较高的模型;而在推荐系统中,为了提升用户体验,可能更关注精确率。 此外,还需要注意评估指标的局限性。例如,准确率在类别不平衡的数据集上可能产生误导;MSE对异常值敏感,可能不适合所有回归任务。因此,在实际应用中,通常需要结合多个评估指标来全面评估模型性能。 #### 5.3.7 小结 本章介绍了机器学习模型评估的核心概念,包括分类、回归和聚类任务中常用的评估指标,以及如何在Python中使用`scikit-learn`库计算这些评估指标。通过掌握这些评估指标和工具,我们可以更加客观、准确地评估模型性能,为后续的模型选择、调参和优化提供有力支持。在未来的机器学习实践中,建议读者根据具体任务和数据特点选择合适的评估指标,并结合多个指标来全面评估模型性能。
上一篇:
5.2.3 带交叉验证的网格搜索
下一篇:
5.3.1 牢记目标
该分类下的相关小册推荐:
Python与办公-玩转Word
Python甚础Django与爬虫
Python合辑14-面向对象编程案例(下)
Python编程轻松进阶(一)
Python合辑5-格式化字符串
Python合辑11-闭包函数
Python合辑8-变量和运算符
Python合辑6-字典专题
Python3网络爬虫开发实战(上)
Python与办公-玩转Excel
Python机器学习实战
Python神经网络入门与实践