当前位置: 首页 > news >正文

政务信息公开和网站建设自评建设工程项目

政务信息公开和网站建设自评,建设工程项目,旅游网站系统,芜湖市网站建设目录 ROC AUC ROC ROC曲线是Receiver Operating Characteristic Curve的简称#xff0c;中文名为受试者工作特征曲线。ROC曲线的横坐标为假阳性率(False Postive Rate, FPR)#xff1b;纵坐标为真阳性率(True Positive Rate, TPR).FPR和TPR的计算方法分别为 F…目录 ROC AUC ROC ROC曲线是Receiver Operating Characteristic Curve的简称中文名为受试者工作特征曲线。ROC曲线的横坐标为假阳性率(False Postive Rate, FPR)纵坐标为真阳性率(True Positive Rate, TPR).FPR和TPR的计算方法分别为 FPR FP/N TPR TP/P 上式中P是真实地正样本地数量N是真实地负样本地数量TP是P个正样本中被分类器预测为正样本地个数FP是N个负样本中被分类器预测为正样本地个数。 如何绘制ROC曲线? ROC曲线是通过不断移动分类器地截断点来生成曲线上地一组关键点地。 在二值分类问题中模型地输出一般都是预测样本为正例地概率。样本按照预测概率从高到底排序。在输出最终地正例、负例之前我们需要指定一个阈值预测概率大于该阈值地样本会判为正例小于该阈值则会被判为负例。比如指定阈值为0.8那么只有第一个样本会被预测为正例其他全部都是负例。上面所说地“截断点”指的就是区分正负预测结果地阈值。 通过动态的调整截断点从最高地得分开始逐渐调整到最低得分每一个截断点都会对应一个FPR和TPR在ROC图上绘制出每个截断点对应地位置再连接所有点就得到最终地ROC曲线。类似于下图 接下来用sklearn来实现。 二分类的实现 def plotROC_BinaryClass(y_true, y_score0)::descript绘制0-1类别的ROC曲线:param y_true: 真实标签两个类别[0,1]:param y_score: 预测值:return: ROC曲线from sklearn.metrics import roc_curve, aucfrom matplotlib import pyplot as pltfpr, tpr, thresholds roc_curve(y_true,y_score0,pos_label1)roc_auc auc(fpr,tpr)plt.figure()lw 2plt.plot(fpr, tpr, colordarkorange,lwlw, labelROC curve (area %0.5f) % roc_auc)plt.plot([0, 1], [0, 1], colornavy, lwlw, 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(Receiver operating characteristic example)plt.legend(loclower right)plt.show() 多分类的实现(每个类分开处理即可) def plotROC_MultiClass(y_true, y_score, class_num)::descript绘制多类别的ROC曲线:param y_true: 真实标签大于两个类别[0,1,2]:param y_score: 预测值:return: ROC曲线from sklearn.metrics import roc_curve,aucfrom sklearn.preprocessing import label_binarizefrom matplotlib import pyplot as plt# 标签转换为one-hotclasses list(set(y_true)) # 类别n_classes len(classes) # 类别数y_true label_binarize(y_true, classes) # y_score label_binarize(y_score, classes)fpr dict()tpr dict()roc_auc dict()for i in range(n_classes):fpr[i], tpr[i], _ roc_curve(y_true[:,i],y_score[:,i],pos_label1)roc_auc[i] auc(fpr[i],tpr[i])plt.figure()# Plot of a ROC curve for a specific classplt.plot(fpr[class_num], tpr[class_num], colordarkorange,lw2,labelROC curve (area %0.2f) % roc_auc[class_num]) # 绘制类别one-hot中索引为2位置的类别ROC曲线plt.plot([0, 1], [0, 1], colornavy, lw2, 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(Receiver operating characteristic example)plt.legend(loclower right)plt.show() AUC AUC指的是ROC曲线下的面积大小该值能够量化的反映基于ROC曲线衡量出的模型性能。 AUC的物理意义正样本的预测结果大于负样本的预测结果的概率。所以AUC反映的是分类器对样本的排序能力。 插入一个重要问题。为什么说ROC和AUC都能应用于非均衡的分类问题 ROC曲线只与横坐标(FPR)和纵坐标(TPR)有关系。我们可以发现TPR只是正样本中预测正确的概率而FPR只是负样本中预测错误的概率和正负样本的比例没有关系因此ROC的值与实际的正负样本比例无关因此既可以用于均衡问题也可以用于非均衡问题。而AUC的几何意义为ROC曲线下的面积因此也和实际的正负样本比例无关。 AUC的计算 法1AUC为ROC曲线下的面积那我们直接计算面积可得。面积为一个个小的梯形面积曲线之和。计算的精度与阈值的精度有关 。理论性质的没法求解。法2根据AUC的物理意义我们计算正样本预测结果大于负样本预测结果的概率。取n1* n0(n1为正样本数n0为负样本数)个二元组每个二元组比较正样本和负样本的预测结果正样本预测结果高于负样本预测结果则为预测正确预测正确的二元组占总二元组的比率就是最后得到的AUC。时间复杂度为O(N* M)。这个换种说法可能更利于我们后面的代码实现。首先根据每个样本的预测概率值对真实标签进行倒序排序然后根据顺序依次找到真实标签为1的样本统计其后面样本概率值低于当前真实正样本的真实负样本的个数最后对所有值求和再除以(正样本个数*负样本个数)法3我们首先把所有样本按照score排序依次用rank表示他们如最大score的样本rankn (nn0n1其中n0为负样本个数n1为正样本个数)其次为n-1。那么对于正样本中rank最大的样本rank_max有n1-1个其他正样本比他score小,那么就有(rank_max-1)-(n1-1)个负样本比他score小。其次为(rank_second-1)-(n1-2)。最后我们得到正样本大于负样本的概率为 :其计算复杂度为(NM) 。法3换种说法有利于我们代码实现。首先根据每个样本的预测概率对真实标签样本从小到大排序然后根据顺序依次找到真实标签为1的样本记录其(索引值1)即上式中的rank再按照上面的公式计算即可。 法2实现 def auc(y_true, y_pred):data zip(y_true, y_pred)data sorted(data, keylambda x: x[1], reverseTrue)data1 [x[0] for x in data]true_posLabel np.sum(y_true)true_negLabel len(y_true) - true_posLabelcount 0for i in range(len(y_true)):if data[i][0] 1:j i1while j len(data) and data[j][1] data[i][1]: # 这里直接忽略了概率相等时取0.5的情况j 1count (len(y_true) - j - np.sum(data1[j:]))return count/(true_negLabel * true_posLabel) 法3实现 def calAUC3(y_pred, y_true):f list(zip(y_pred.tolist(),y_true.tolist()))rank [values2 for values1,values2 in sorted(f,keylambda x:x[0])]rankList [i1 for i in range(len(rank)) if rank[i]1]posNum 0negNum 0for i in range(len(y_true)):if(y_true[i]1):posNum1else:negNum1auc 0auc float(sum(rankList)- (posNum*(posNum1))/2)/(posNum*negNum)return auc AUC和ROC是不平衡数据集中最常用的指标之一。 对于其他的评价指标需要时再整理把。 机器学习评估指标 - 知乎 机器学习评估与度量指标 - 知乎
http://www.hkea.cn/news/14336668/

相关文章:

  • 深圳企业推广网站手机网站开发要多久
  • discuz做淘客网站上海市建设干部学校网站
  • 个人网站涉及企业内容做网站要哪些人员
  • 成都推广系统织梦网站是不是容易做seo
  • 北京网站建设公司华网天下官网海外网站空间
  • 海外网站建设公司用dw做购票网站
  • 珠海网站建设专业设计怎样建设网站后台
  • 网站seo推广优化一家做公司点评的网站
  • 台州外贸网站网站建设与架构男友实验
  • 织梦网站源码好吗陕西建设集团韩城公司网站
  • 北京网站空间建设网站的网页设计
  • 广东手机网站开发多少常州谷歌推广
  • 领导交给你一个网站你该怎么做网络营销软件价格
  • 做机械设备销售的那个网站好家具设计理念
  • 连锁加盟网站制作快速微信网站建设
  • 城乡建设部网站ps做的网站首页
  • 自己的做网站自建网站平台有哪些功能
  • 免费源码资源站做一个微信小程序游戏需要多少钱
  • 怀安网站制作怎嘛做网站
  • 网站建设博采wordpress文章迁移
  • 个人如果做网站赚钱wordpress重写登录页面
  • 洛阳做网站的有网站建wap
  • 校园官方网站建设给公司建网站需要多少钱
  • 网页设计网站多少钱网站相对路径 .
  • 杨浦网站建设公司长沙做网站湖南微联讯点不错
  • nat123做网站 查封杭州学编程哪里的培训机构好
  • 响应式网站的几种尺寸wordpress单点sso
  • 一般产地证去哪个网站做郑州房产信息网查询系统
  • 万能引流软件衡阳做网站优化
  • 教育网站 网页赏析企业免费网站设计公司