【数据挖掘】分类器模型性能评估讲解及iris数据集评估实战(超详细 附源码)

简介: 【数据挖掘】分类器模型性能评估讲解及iris数据集评估实战(超详细 附源码)

需要源码请点赞关注收藏后评论区留言私信~~~

构建的分类器总是希望有较好的性能,如何评估分类器性能,需要一些客观的指标进行评判。比如,如何评估分类器的准确率(模型评估)以及如何在多个分类器中选择“最好的”一个

分类器性能的度量

训练分类器的目的是使学习到的模型对已知数据和未知数据都有很好的预测能力,不同的学习方法会给出不同的模型,当给定损失函数时,基于损失函数的模型的训练误差和模型的测试误差则成为学习方法评估的标准,训练误差的大小,对判定给定问题是不是一个容易学习的问题是有意义的,但本质上不重要,测试误差反映了学习方法对未知的测试数据集的预测能力,通常将学习方法对未知数据的预测能力称为泛化能力

1. 混淆矩阵

根据实际类别与机器学习预测类别的组合(混淆矩阵,Confusion Matrix)可分为真正例(True Positive,TP)、假正例(False Positive,FP)、假负例(False Negative,FN)和真负例(True Negative,TN)四种情况

真正例指被分类器正确分类的正元组,令TP为真正例的个数

真负例指被分类器正确分类的负元组 令TN为真负例的个数

假正例指被错误的标记为正元组的负元组 令FP为假正例的个数

假负例指被错误的标记为负元组的正元组 令FN为假负例的个数

混淆矩阵是分析分类器识别不同类元组的一种有用工具

2.分类器常用评估量

(1)准确率和错误率 分类器在检验集上的准确率(Accuracy)被定义为被该分类器正确分类的元组所占的百分比

(2)灵敏性和特效性 敏感性又称真正类率(true positive rate ,TPR),它表示了分类器所识别出的正实例占所有正实例的比例。特效性是真负例率,即正确识别的负元组的百分比

(3)精度和召回率 精度和召回率也在分类中广泛使用。精度(Precision)定义为标记为正例的元组实际为正类的百分比,可以看作精确度的度量,也被称为查准率。召回率(Recall)定义为正元组标记为正的百分比,是完全性的度量,也被称为查全率

除了基于准确率的度量外,还可以在其他方面进行分类器的比较,主要因素有

速度:构建和使用分类器的计算开销

鲁棒性:对有噪声或缺失值数据分类器做出正确预测的能力。通常鲁棒性用噪声和缺失值渐增的一系列合成数据集进行评估

可伸缩性:对于给定大量数据有效构造分类器的能力。通常,可伸缩性用规模渐增的一系列数据集评估

可解释性:对分类器提供的理解和洞察水平。可解释性是主观的,因为很难评估。比如决策树和分类规则一般容易解释,但随着它们变得更复杂,其可解释性也随之消失

(5)P-R曲线

评价一个模型的好坏,不能仅靠精确率或者召回率,最好构建多组精确率和召回率,绘制出模型的P-R曲线

在绘制P-R曲线的横轴是召回率,纵轴是精确率。P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率

(6)接收者操作特征曲线

接收者操作特征曲线(Receiver Operating Characteristic Curve,ROC)是一种反映分类模型敏感性和特异性连续变量的综合指标,显示了给定模型的真正例率(TPR)和假正例率(FPR)之间的权衡。ROC通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,并以TPR为纵坐标、FPR为横坐标绘制曲线,曲线下面积越大,诊断准确性越高。ROC曲线上每个点反映着对同一信号刺激的感受性,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值

Python分类器评估实例

首先导入相关模块和数据

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.metrics import roc_curve, auc  
from sklearn import model_selection
iris = datasets.load_iris()
X = iris.data
y = iris.target

iris数据取前2类数据并增加随机扰动

X, y = X[y != 2], y[y != 2]
#增加噪声
random_state = np.random.RandomState(0)
n_samples, n_features = X.shape
X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]

数据集划分并进行模型训练

绘制ROC曲线

代码如下

y_score = classifier.fit(X_train, y_train).decision_function(X_test)
# Compute ROC curve and ROC area for each class
fpr,tpr,threshold = roc_curve(y_test, y_score) #计算真正率和假正率
roc_auc = auc(fpr,tpr) ###计算auc的值
plt.rre()
# lw = 2
plt.figure(figsize=(8,4))
plt.plot(fpr, tpr, color='darkorange',
         la正率为纵坐标做曲线
plt.plot([0, 1], [0, 1], color='navy', 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('ROC曲线示例')
plt.legend(loc="lower right")
plt.show()

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
3月前
|
机器学习/深度学习 数据挖掘 Python
【数据挖掘】生成模型和判别模型的区别及优缺点
文章讨论了生成模型和判别模型在数据挖掘中的区别、原理、优缺点,并提供了一些常见的模型示例。
35 0
|
5月前
|
数据采集 数据可视化 数据挖掘
数据挖掘实战:使用Python进行数据分析与可视化
在大数据时代,Python因其强大库支持和易学性成为数据挖掘的首选语言。本文通过一个电商销售数据案例,演示如何使用Python进行数据预处理(如处理缺失值)、分析(如销售额时间趋势)和可视化(如商品类别销售条形图),揭示数据背后的模式。安装`pandas`, `numpy`, `matplotlib`, `seaborn`后,可以按照提供的代码步骤,从读取CSV到数据探索,体验Python在数据分析中的威力。这只是数据科学的入门,更多高级技术等待发掘。【6月更文挑战第14天】
481 11
|
5月前
|
数据采集 机器学习/深度学习 数据可视化
数据挖掘实战:Python在金融数据分析中的应用案例
Python在金融数据分析中扮演关键角色,用于预测市场趋势和风险管理。本文通过案例展示了使用Python库(如pandas、numpy、matplotlib等)进行数据获取、清洗、分析和建立预测模型,例如计算苹果公司(AAPL)股票的简单移动平均线,以展示基本流程。此示例为更复杂的金融建模奠定了基础。【6月更文挑战第13天】
1451 3
|
5月前
|
人工智能 分布式计算 算法
数据挖掘实战随笔更新清单
这是一系列技术博客的摘要,涵盖了多个主题。包括Elasticsearch实战经验、Maxcompute中的Geohash转换和GPS处理、Python环境配置与管理(如Jupyter、Miniforge、Miniconda)、批量接口调用、多进程CSV图片下载、Excel到Markdown转换、Scikit-learn的异常检测(OC-SVM)和模型总结、人工智能领域的图像分类和识别、文本挖掘算法以及数仓相关的行转列处理。所有文章都在持续更新和补充中。
47 2
|
6月前
|
算法 搜索推荐 数据挖掘
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(续)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(续)
|
6月前
|
机器学习/深度学习 数据采集 算法
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(二)
数据挖掘实战 —— 抖音用户浏览行为数据分析与挖掘(二)

热门文章

最新文章