【Python数据分析】数据挖掘建模——分类与预测算法评价(含ROC曲线、F1等指标的解释)

模型预测效果评价,通常可以用以下指标来衡量

目录

1.绝对误差和相对误差

2.平均绝对误差、均方误差、均方根误差与平均绝对百分误差

3.Kappa统计

4.混淆矩阵

5.准确度(Accuracy)、精确率(Precision)和召回率(Recall)

6.ROC曲线与AUC

7.Python分类预测模型的特点


1.绝对误差和相对误差

Y表示实际值,\hat{Y}表示预测值,则绝对误差E表示为

E=Y-\hat{Y}

相对误差e表示为

e=\frac{Y-\hat{Y}}{Y}

2.平均绝对误差、均方误差、均方根误差与平均绝对百分误差

平均绝对误差(Mean Absolute Error, MAE)计算公式如下:

MAE=\frac{1}{n}\sum_{i=1}^{n}|E_{i}|=\frac{1}{n}\sum_{i=1}^{n}|Y_{i}-\hat{Y}_{i}|

E_{i}表示第i个实际值与预测值的绝对误差。

均方误差(Mean Squared Error, MSE)计算公式如下:

MSE=\frac{1}{n}\sum_{i=1}^{n}E_{i}^{2}=\frac{1}{n}\sum_{i=1}^{n}(Y_{i}-\hat{Y}_{i})^{2}

均方根误差(Root Mean Squared Error,RMSE)计算公式如下:

 RMSE=\frac{1}{n}\sum_{i=1}^{n}\sqrt{E_{i}^{2}}=\frac{1}{n}\sum_{i=1}^{n}\sqrt{(Y_{i}-\hat{Y}_{i})^{2}}

平均绝对百分误差(Mean Absolute Percentage Error,MAPE)计算公式如下:

一般认为MAPE小于10时,预测精度较高 

 MAPE=\frac{1}{n}\sum_{i=1}^{n}|E_{i}/Y_{i}|=\frac{1}{n}\sum_{i=1}^{n}|(Y_{i}-\hat{Y}_{i})/Y_{i}|

这几个指标都是误差分析的综合指标。

3.Kappa统计

Kappa统计是比较两个或多个观测者对同一事物或者观测者对同一事物的两次或多次观测结果是否一致,Kappa取值在区间[-1,1]内,其值的大小均有不同意义,具体如下:

4.混淆矩阵

混淆矩阵中元素的行下标对应目标的真实属性,列下标对应分类器产生的识别属性,对角线元素表示各个模式能够被分类器正确识别的百分率。下面还会有混淆矩阵更多介绍。 

5.准确度(Accuracy)、精确率(Precision)和召回率(Recall)

假阴性(FN): 算法预测为负例(N),实际上是正例(P)的个数,即算法预测错了(False);

真阴性(TN):算法预测为负例(N),实际上也是负例(N)的个数,即算法预测对了(True);

真阳性(TP):算法预测为正例(P),实际上是负例(N)的个数,即算法预测错了(False);

假阳性(FP):算法预测为正例(P),实际上也是正例(P)的个数,即算法预测对了(True)。

混淆矩阵定义如下: 

准确率表示所有样本中模型预测正确的比例;

Accuracy = \frac{TP+TN}{TP+TN+FP+FN}

精确率表示预测为正例中实际是正例(预测正确)的比例,判断预测结果准不准

Precision=\frac{TP}{TP+FP}

召回率,也叫查全率,表示实际正例中预测正确的比例,判断预测结果全不全

Recall=\frac{TP}{TP+FN}

F1是精准率和召回率的调和平均调和平均一个很重要的特性是如果两个数极度不平衡(一个很大一个很小),最终的的结果会很小,只有两个数都比较高时,调和平均才会比较高,这样便达到了平衡精准率和召回率的目的。

F1=\frac{2*Precision*Recall}{Precision+Recall}

6.ROC曲线与AUC

灵敏度(sensitivity):true positive rate,真阳性样本在实际阳性样本中的占比,也是上面的召回率

TPR=\frac{TP}{TP+FN}

特异度(specificity):true negative rate,真阴性样本在实际阴性样本中的占 

TNR= \frac{TN}{(FP + TN)}

 此图来自:统计学中的灵敏度和特异度 - 知乎

ROC(receiver operating characteristic curve,受试者工作特性)曲线是根据一系列不同的二分类方式(分界值或决定阈),以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线。

该曲线下的积分面积(AUC)能反映分类器正确分类的统计概率,其值越接近1说明该算法效果越好。

  • AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。绝大多数预测的场合,不存在完美分类器。
  • 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
  • AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
  • AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

参考:什么是ROC曲线?为什么要使用ROC?以及 AUC的计算 - 云+社区 - 腾讯云

ROC曲线具体是怎么得到的可以参考:ROC及AUC计算方法及原理_糖葫芦君的博客-CSDN博客_roc

下面介绍ROC曲线的Python实现:

import matplotlib.pyplot as plt 
from sklearn.metrics import roc_curve, auc, mean_squared_error, accuracy_score
import math
def check_fit(truth, prob):
    """
    truth: 真实的值 
    prob: 预测的值 
    """
    fpr, tpr, _ = roc_curve(truth, prob)     # drop_intermediate:(default=True) 
    roc_auc = auc(fpr, tpr)   # 计算auc值,roc曲线下面的面积 等价于 roc_auc_score(truth,prob)
 
    plt.figure()
    plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
    plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
    plt.xlim([-0.1, 1.05])
    plt.ylim([-0.1, 1.05])
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('Receiver operating characteristic example')
    plt.legend(loc="lower right")
    plt.show() 
 
    print('results are RMSE, accuracy, ROC')
    predics = [1 if i>=0.5 else 0 for i in prob]
    print(math.sqrt(mean_squared_error(truth, prob)), accuracy_score(truth, predics), roc_auc)

7.Python分类预测模型的特点

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据挖掘实习报告 数据挖掘实习报告全文共32页,当前为第1页。数据挖掘实习报告全文共32页,当前为第1页。数据挖掘实习报告 数据挖掘实习报告全文共32页,当前为第1页。 数据挖掘实习报告全文共32页,当前为第1页。   篇一:数据挖掘实习报告   通过半年的实习,我在这里得到了一次较全面的、系统的锻炼,也学到了许多书本上所学不到的知识和技能。以下是我这次的实习鉴定。   经历了实习,对社会也有了基本的实践,让我学到了书本以外的知识,实习期间,我努力尽量做到理论与实践相结合,在实习期间能够遵守工作纪律,不迟到、早退,认真完成领导交办的工作。在实习鉴定中,我参与了整个数据分析工作,从数据获取到数据清洗、数据报表的制定到型的立以及型监控等等,让我充分学习了数据分析岗位的实际操作。   在实习初期,项目经理安排了我参与数据获取的相关工作,主要是编写SQL代码在linux上用Perl语言调用获取数据。起初觉得自己对SQL语言了解较多,以为这份工作非常简单。但实际操作起来才知道,在数据量达到几百兆甚至上GB级别的时候,所学的SQL根本解决不了问题。经向项目经理学习,这才知道了如何使用分层次操作等速度较快的SQL技巧。通过这两个月的实习充分认识到所学知识远远不够。   完成数据获取阶段之后,项目经理开始安排数据清洗以及数据报表制定的相关工作。接到这份工作之初,对数据清数据挖掘实习报告全文共32页,当前为第2页。数据挖掘实习报告全文共32页,当前为第2页。洗并没有太多的认识,以为很多都是按照《数据挖掘》教材中步骤进行就可以的。但经过项目经理指导之后才知道数据清洗之前首先要对项目业务进行一定的了解,只有清晰了业务数据的来源、数据的实际意义才知道哪些数据可以称为极端值,哪些数据又是不正常的,制定报告或者交给型分析师时需要去除的等等。同时,在制定数据报表的同时学习了很多excel函数的使用,透视表的使用,PPT报告的书写等等。   在实习的后三个月,开始接触了型的分析与监控。在学习《机器学习》以及《数据挖掘》书本时,总会想到各种各样的分类型,也总会认为型准确率高的型才会是好型。在运用统计型之前,项目经理首先向实习生介绍了目前挖掘部门常用的分类型以及具体的一些使用方法。其中逻辑回归型、决策树型是常用的分类型,回归分析和时间序列型是常用的预测型,这与平日所学基本一致。正当好奇为什么不使用支持向量机以及神经络型之时,项目经理说,由于型结果都是要给市场部门的同事报告的,所以型结果最好能够简单易懂的。在实际工作才知道,一般除了用型准确率来衡量型的效果外,还有例如灵敏度、ROC曲线、RA曲线等等指标值。而型的操作过程也不是想象的那么简单,并不是用R软件上的几个函数,几行代码就能解决的,选择什么参数、选择什么样的型,当然最重要数据挖掘实习报告全文共32页,当前为第3页。数据挖掘实习报告全文共32页,当前为第3页。的还是选择什么样的基础数据作为型的训练数据才是最重要的,这才发现项目经理之前提到的业务知识是多么的重要。   在立之后就是型监控了,由于是我负责的项目,所以项目经理也将监控这一任务交给了我。数据挖掘型通常情况下都是要上线的,但型的效果会随着数据的变化而变化,当型的指标达到一定程度时就需要修改型。在这一阶段,充分锻炼了我的程序编写能力。   在整一个实习过程,非常感谢项目经理给予了我数据挖掘整一个流程学习的机会,让我真正对数据挖掘的实际工作有了一定的认识,也让我学习到了很多学校学习中学不到的实际操作能力,在此表示衷心的感谢。   篇二:数据挖掘实验报告   经贸学院 市场营销专业   数据挖掘管理实验报告   实验名称: 数据挖掘—聚类分析   实验时间:XX年12月21日   班 级 11252   姓 名 潘宏   学 号 1125219   成 绩   指导老师 王林 数据挖掘实习报告全文共32页,当前为第4页。数据挖掘实习报告全文共32页,当前为第4页。  一、数据过程   1、启动SPSS 双击窗口底部节点选项板中的"源"中的statistics文件立文件,如图1。   图1   2、右击statistics文件编辑,如图2。   图   2   3、点击省略号其中一个选择文件打开。单击应用并确定,如图3和   图3   图   4   4、双击输出选项中的表节点,如图5所示,表节点出现在工作区中。   图5   5、如图6所示,右击运行表节点。可以看到图中关于客户资产购   平台价值的数据记录。该数据包A1,A2等字段。   图   6   6、如图7,在字段选项中双击类型节点,则类型节点出现在工作表 数据挖掘实习报告全文共32页,当前为第5页。数据挖掘实习报告全文共32

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值