分类模型评价指标:精确率、召回率及P-R曲线、ROC曲线具体实现(附详尽代码).pdfVIP

分类模型评价指标:精确率、召回率及P-R曲线、ROC曲线具体实现(附详尽代码).pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分类模型评价指标:精确率、召回率及P-R曲线、ROC曲线具 体实现(附详尽代码) 1.评价指标定义(⼆分类) 对于⼆分类问题,可将样例根据其真实类别与学习器预测的类别组合成混淆矩阵。在该矩阵中,矩阵中的⾏代表样例的真实类别,矩阵中的 列代表预测器预测的类别(⾏和列所代表的可以互相交换)。利⽤混淆矩阵,可以将样本分为以下四种: 预测类别 真实类别 正例 负例 正例 TP(真正例) FN(假反例) 负例 FP(假正例) TN(真反例) 真正例:真实为正样本,预测也为正样本。假反例:真实为正样本,预测为负样本。 假正例:真实为负样本,预测为正样本。真反例:真实为负样本,预测也为负样本。 从上述四个定义可以发现,只有真正例和真反例对应的样本才是模型正确预测的。基于这四类样本,延伸出了以下模型评价指标: 精确率(P):⼜叫查准率。描述的是实际为正的样本占所有预测为正的样本的⽐例。即,所有预测为正的样本中有多少样本实际也为 正。其公式为:P =TP/(TP+FP)。 召回率(R):⼜叫查全率。描述的是预测为正的样本占所有实际为正的样本的⽐例。即,所有实际为正的样本中有多少样本被预测为 正。其公式为:R=TP/(TP+FN) P-R曲线:根据模型的预测结果对记录进⾏排序,按此顺序逐个将记录作为正样本进⾏预测,计算出精确率和召回率。然后以精确率为 纵坐标,召回率为横坐标。然后将点连成线即可。 F1值是精确率和召回率的调和均值 :2/F1=1/P+1/R 真正率(TPR):TPR=TP/(TP+FN)。即,所有实际为正的样本中也被预测为正的样本的⽐例。 假正率(FPR):FPR=FP/(TN+FP)。即,所有实际为负的样本中被预测为正的样本的⽐例。 ROC曲线:与P-R曲线类似,只不过其纵坐标为真正率,假正率为横坐标。然后将点连成线即可。 AUC值;坐标系中ROC曲线的⾯积。 2. 代码实现 这部分主要是想⾃⼰写代码实现上述指标的计算。在以下代码中,模型的训练及学习会直接调⽤sklearn中的包来实现。各个指标及曲线的 实现则⽤ ⾃⼰的代码实现。以UCI中的乳腺癌数据集为例,使⽤逻辑回归模型训练数据。另外,鉴于这⾥的⽬的并不在于模型的训练过程, 所以这⾥把整个数据集中的数据都作为训练数据,不再抽取样本作为测试集。以1为zheng 2.1 取数及模型训练 from sklearn.datasets import load_breast_cancer import pandas as pd import numpy as np from sklearn.linear_model import LogisticRegression #取出数据集,X即为feature对应的数据,y即为类标记数据 X,y=load_breast_cancer(return_X_y=True) #训练模型 LR=LogisticRegression(random_state=0).fit(X,y) #现在将数据投⼊到模型中,然后将模型预测的结果输出。 #LR.predict()函数会直接返回模型对每⼀条数据给出的预测的类标签 #LR.predict_proba()这个函数会返回每⼀条数据被预测成正负类的概率。 result=pd.DataFrame(LR.predict_proba(X),columns=LR.classes_).join(pd.Series(LR.predict(X),name=pre_target)) #实际结果 result[target]=y result.head(10) result的结果如下: 对result做简单分析可以发现,对每⼀样本⽽⾔,0列和1列中的较⼤值所对应的类别即为模型的预测类别。 下⾯先来构造混淆矩阵。具体代码如下: #先计算TP,TN,FP,FN,并构建混淆矩阵。把类别1当作正样本 TP=re

文档评论(0)

文库垃圾佬 + 关注
实名认证
文档贡献者

这个人很懒

1亿VIP精品文档

相关文档