python auc三维图_Python画ROC曲线和AUC值盘算(附代码)_后端开发

媒介

ROC(Receiver Operating Characteristic)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣。这篇文章将先简朴的引见ROC和AUC,而后用实例演示怎样python作出ROC曲线图以及盘算AUC。

AUC引见

AUC(Area Under Curve)是机械进修二分类模子中异常经常运用的评价目的,比拟于F1-Score对项目的不平衡有更大的容忍性,现在罕见的机械进修库中(比方scikit-learn)平常也都是集成该目的的盘算,然则有时刻模子是零丁的或许自身编写的,此时想要评价练习模子的优劣就得自身搞一个AUC盘算模块,本文在查询材料时发明libsvm-tools有一个异常通俗易懂的auc盘算,因而抠出来用作往后之用。

AUC盘算

AUC的盘算分为下面三个步骤:

1、盘算数据的预备,假如模子练习时只要练习集的话平常运用交织考证的体式格局来盘算,假如有评价集(evaluate)平常就能够直接盘算了,数据的花样平常就是须要展望得分以及其目的种别(注重是目的种别,不是展望获得的种别)

2、依据阈值分别获得横(X:False Positive Rate)以及纵(Y:True Positive Rate)点

3、将坐标点连成曲线以后盘算其曲线下面积,就是AUC的值

直接上python代码

#! -*- coding=utf-8 -*-import pylab as pl

from math import log,exp,sqrt

evaluate_result="you file path"db = [] #[score,nonclk,clk]pos, neg = 0, 0

with open(evaluate_result,'r') as fs: for line in fs:

nonclk,clk,score = line.strip().split('\t')

nonclk = int(nonclk)

clk = int(clk)

score = float(score)

db.append([score,nonclk,clk])

pos += clk

neg += nonclk

db = sorted(db, key=lambda x:x[0], reverse=True)

#盘算ROC坐标点xy_arr = []tp, fp = 0., 0.

for i in range(len(db)):

tp += db[i][2]

fp += db[i][1]

xy_arr.append([fp/neg,tp/pos])

#盘算曲线下面积auc = 0.

prev_x = 0for x,y in xy_arr: if x != prev_x:

auc += (x - prev_x) * y

prev_x = x

print "the auc is %s."%auc

x = [_v[0] for _v in xy_arr]

y = [_v[1] for _v in xy_arr]

pl.title("ROC curve of %s (AUC = %.4f)" % ('svm',auc))

pl.xlabel("False Positive Rate")

pl.ylabel("True Positive Rate")

pl.plot(x, y)# use pylab to plot x and y

pl.show()# show the plot on the screen

其花样为:

nonclk \t clk \t score

个中:

1、nonclick:未点击的数据,能够看作负样本的数目

2、clk:点击的数目,能够看作正样本的数目

3、score:展望的分数,以该分数为group举行正负样本的预统计能够削减AUC的盘算量

运转的效果为:

假如本机没装置pylab能够直接解释依靠以及绘图部份

注重

上面贴的代码:

1、只能盘算二分类的效果(至于二分类的标签随意处置惩罚)

2、上面代码中每一个score都做了一次阈值,实在如许效力是相称低的,能够对样本举行采样或许在盘算横轴坐标时举行平分盘算

异常谢谢你的浏览

大学的时刻挑选了自学python,工作了发明吃了盘算机基本不好的亏,学历不行这是没办法的事,只能后天填补,因而在编码以外开启了自身的逆袭之路,不停的进修python中心学问,深切的研习盘算机基本学问,整顿好了,我放在我们的微信民众号《程序员学府》,假如你也不甘平凡,那就与我一同在编码以外,不停生长吧!

实在这里不仅有手艺,更有那些手艺以外的东西,比方,怎样做一个细腻的程序员,而不是“屌丝”,程序员自身就是尊贵的一种存在啊,岂非不是吗?[点击到场]想做你自身想成为高贵人,加油!

谢谢人人的浏览,愿望人人收益多多。

本文转自:https://blog.csdn.net/adrrry/article/details/106796288

引荐教程:《python教程》

以上就是Python画ROC曲线和AUC值盘算(附代码)的细致内容,更多请关注ki4网别的相干文章!

收藏 | 0

你可能感兴趣的:(python,auc三维图)