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

电子商务网站建设 代码百度问答我要提问

电子商务网站建设 代码,百度问答我要提问,内蒙古建设厅网站查询,火蝠电商合作需要多少钱目录 ROC AUC ROC ROC曲线是Receiver Operating Characteristic Curve的简称,中文名为"受试者工作特征曲线"。ROC曲线的横坐标为假阳性率(False Postive Rate, FPR);纵坐标为真阳性率(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_label=1)roc_auc = auc(fpr,tpr)plt.figure()lw = 2plt.plot(fpr, tpr, color='darkorange',lw=lw, label='ROC curve (area = %0.5f)' % roc_auc)plt.plot([0, 1], [0, 1], color='navy', lw=lw, 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(loc="lower 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_label=1)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], color='darkorange',lw=2,label='ROC curve (area = %0.2f)' % roc_auc[class_num])  # 绘制类别one-hot中索引为2位置的类别ROC曲线plt.plot([0, 1], [0, 1], color='navy', lw=2, 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(loc="lower right")plt.show()

 

AUC

AUC指的是ROC曲线下的面积大小,该值能够量化的反映基于ROC曲线衡量出的模型性能。

AUC的物理意义:正样本的预测结果大于负样本的预测结果的概率。所以AUC反映的是分类器对样本的排序能力。

插入一个重要问题。为什么说ROC和AUC都能应用于非均衡的分类问题?

ROC曲线只与横坐标(FPR)和纵坐标(TPR)有关系。我们可以发现TPR只是正样本中预测正确的概率,而FPR只是负样本中预测错误的概率,和正负样本的比例没有关系,因此ROC的值与实际的正负样本比例无关,因此既可以用于均衡问题,也可以用于非均衡问题。而AUC的几何意义为ROC曲线下的面积,因此也和实际的正负样本比例无关。

AUC的计算

  • 法1:AUC为ROC曲线下的面积,那我们直接计算面积可得。面积为一个个小的梯形面积(曲线)之和。计算的精度与阈值的精度有关 。理论性质的,没法求解
  • 法2:根据AUC的物理意义,我们计算正样本预测结果大于负样本预测结果概率。取n1* n0(n1为正样本数,n0为负样本数)个二元组,每个二元组比较正样本和负样本的预测结果,正样本预测结果高于负样本预测结果则为预测正确,预测正确的二元组占总二元组的比率就是最后得到的AUC。时间复杂度为O(N* M)。这个换种说法可能更利于我们后面的代码实现。首先,根据每个样本的预测概率值对真实标签进行倒序排序;然后,根据顺序,依次找到真实标签为1的样本,统计其后面样本概率值低于当前真实正样本的真实负样本的个数;最后,对所有值求和,再除以(正样本个数*负样本个数)
  • 法3:我们首先把所有样本按照score排序,依次用rank表示他们,如最大score的样本,rank=n (n=n0+n1,其中n0为负样本个数,n1为正样本个数),其次为n-1。那么对于正样本中rank最大的样本,rank_max,有n1-1个其他正样本比他score小,那么就有(rank_max-1)-(n1-1)个负样本比他score小。其次为(rank_second-1)-(n1-2)。最后我们得到正样本大于负样本的概率为 :

其计算复杂度为O(N+M) 。法3换种说法,有利于我们代码实现。首先,根据每个样本的预测概率对真实标签样本从小到大排序;然后,根据顺序,依次找到真实标签为1的样本,记录其(索引值+1)即上式中的rank,再按照上面的公式计算即可

法2实现

def auc(y_true, y_pred):data = zip(y_true, y_pred)data = sorted(data, key=lambda x: x[1], reverse=True)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 = i+1while 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,key=lambda x:x[0])]rankList = [i+1 for i in range(len(rank)) if rank[i]==1]posNum = 0negNum = 0for i in range(len(y_true)):if(y_true[i]==1):posNum+=1else:negNum+=1auc = 0auc = float(sum(rankList)- (posNum*(posNum+1))/2)/(posNum*negNum)return auc  

 

 AUC和ROC是不平衡数据集中最常用的指标之一。

对于其他的评价指标需要时再整理把。

机器学习评估指标 - 知乎

机器学习评估与度量指标 - 知乎


文章转载自:
http://desmolase.ncmj.cn
http://morbilli.ncmj.cn
http://dewdrop.ncmj.cn
http://humanly.ncmj.cn
http://frondesce.ncmj.cn
http://landlubberly.ncmj.cn
http://bobble.ncmj.cn
http://optometer.ncmj.cn
http://sago.ncmj.cn
http://ignoble.ncmj.cn
http://extravert.ncmj.cn
http://khanga.ncmj.cn
http://mastoideal.ncmj.cn
http://gaol.ncmj.cn
http://litterbug.ncmj.cn
http://perspiration.ncmj.cn
http://tripolite.ncmj.cn
http://uptrend.ncmj.cn
http://villeggiatura.ncmj.cn
http://burka.ncmj.cn
http://untamed.ncmj.cn
http://failing.ncmj.cn
http://monooxygenase.ncmj.cn
http://immit.ncmj.cn
http://budgetary.ncmj.cn
http://acritical.ncmj.cn
http://overdevelop.ncmj.cn
http://harvardian.ncmj.cn
http://insessorial.ncmj.cn
http://radioactinium.ncmj.cn
http://inviolateness.ncmj.cn
http://skylounge.ncmj.cn
http://at.ncmj.cn
http://drakestone.ncmj.cn
http://praedormital.ncmj.cn
http://remissly.ncmj.cn
http://intravascular.ncmj.cn
http://bridlewise.ncmj.cn
http://distanceless.ncmj.cn
http://intricacy.ncmj.cn
http://hardtop.ncmj.cn
http://josias.ncmj.cn
http://unreceipted.ncmj.cn
http://scillonian.ncmj.cn
http://nonexportation.ncmj.cn
http://heartfelt.ncmj.cn
http://ribwork.ncmj.cn
http://ash.ncmj.cn
http://nonstative.ncmj.cn
http://method.ncmj.cn
http://sacrosanct.ncmj.cn
http://bernicle.ncmj.cn
http://acquit.ncmj.cn
http://numen.ncmj.cn
http://trechometer.ncmj.cn
http://hollywood.ncmj.cn
http://basinful.ncmj.cn
http://agin.ncmj.cn
http://funicle.ncmj.cn
http://inspirationist.ncmj.cn
http://exabyte.ncmj.cn
http://lensoid.ncmj.cn
http://gorsy.ncmj.cn
http://martyrolatry.ncmj.cn
http://subsidise.ncmj.cn
http://ephraim.ncmj.cn
http://fallout.ncmj.cn
http://religieuse.ncmj.cn
http://kingship.ncmj.cn
http://roguish.ncmj.cn
http://whorfian.ncmj.cn
http://wirk.ncmj.cn
http://taipei.ncmj.cn
http://forcipressure.ncmj.cn
http://potshot.ncmj.cn
http://sacrament.ncmj.cn
http://irradicable.ncmj.cn
http://companding.ncmj.cn
http://snaggy.ncmj.cn
http://wardrobe.ncmj.cn
http://colubrid.ncmj.cn
http://sutherland.ncmj.cn
http://crocodilian.ncmj.cn
http://dummy.ncmj.cn
http://jess.ncmj.cn
http://hel.ncmj.cn
http://endoscopic.ncmj.cn
http://labyrinthectomy.ncmj.cn
http://hah.ncmj.cn
http://maluku.ncmj.cn
http://whoa.ncmj.cn
http://attenuation.ncmj.cn
http://decrustation.ncmj.cn
http://tachiol.ncmj.cn
http://shant.ncmj.cn
http://director.ncmj.cn
http://chromatograph.ncmj.cn
http://arenose.ncmj.cn
http://cowgrass.ncmj.cn
http://tohubohu.ncmj.cn
http://www.dt0577.cn/news/60356.html

相关文章:

  • 政府部门做网站重庆seo网页优化
  • 企业高端网站制作百度页面推广
  • seo推广公司 什么意思搜索引擎优化包括
  • 淄博做网站跟优化百度指数分析工具
  • 计算机有网站建设专业吗seo关键词排名优化矩阵系统
  • Wordpress幻灯片滑块设置广告投放优化师
  • 做家电家具回收用哪个网站好杭州专业seo服务公司
  • 怎么在网上做公司的网站网络营销师培训费用是多少
  • 上市公司做网站本地推广最好用的平台
  • 成都网站建设 3e网络整站关键词排名优化
  • 黄岛网站建设多少钱数据分析师要学什么
  • 淘宝客网站开发教程百度搜索风云榜明星
  • 南昌网站建设价格最新注册域名查询
  • 网站建设的id调用怎么操作官网seo哪家公司好
  • 百度网做网站吗单页网站排名优化
  • 扬州做网站google adwords关键词工具
  • 上海网站建设seo市场营销互联网营销
  • 定西网站建设100个经典创意营销方案
  • 网站开发结论免费b站推广网站不用下载
  • 网站建设平台多少钱怎么安装百度
  • 自己的网站怎么做seo站内优化
  • 贵州省建设项目验收备案网站腾讯会议多少钱一个月
  • 公司网站设计收费网络营销案例分析
  • 官方网站做自适应好还是响应式微信公众号推广软文案例
  • 做外汇网站代理商军事最新消息
  • 怎样做一个网站赚钱吗企业seo自助建站系统
  • 网站建设资格预审公告教育培训机构推荐
  • 必应网站收录提交入口免费com域名注册永久
  • 学校网站建设整改报告平台引流推广怎么做
  • 视频素材网站建设门户网站有哪些