(资料图)
很多学习器是为了测试样本产生的一个实值或概率预测,然后将这个预测值与一个分类阈值(threshold)进行比较,若大于阈值则分为正类,否则为反类。主要看需要建立的模型侧重于想用在测试数据的泛华性能的好坏。排序本身的质量好坏体系了综合考虑学习去在不同任务下的“期望泛化性能”的好坏。ROC曲线则是从这个角度出发来研究学习器泛化性能。
ROC的全称是“受试者工作特征”曲线,与P-R曲线相似。与P-R曲线使用查准率、查全率为纵、横坐标不同,ROC曲线的纵轴是“真正例率”{简称TPR),横轴是“假正例率”(简称FPR)二者分别定义为:
ROC曲线图以真正例率为Y轴,假正例率为X轴。
进行检验判定ROC曲线性能的合理判据是比较ROC曲线下的面积,即AUC。从定义知AUC可通过对ROC曲线下各部分的面积求和而得,AUC可估算为:
从形式化看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密联系。因此存在排序损失。
形式基本和P-R曲线差不多,只是几个数值要改一下。
代码如下(示例):
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve, auc
from itertools import cycle
from sklearn.preprocessing import label_binarize #标签二值化LabelBinarizer,可以把yes和no转化为0和1,或是把incident和normal转化为0和1。
import numpy as np
from sklearn.multiclass import OneVsRestClassifier
iris = datasets.load_iris()
# 鸢尾花数据导入
X = iris.data
#每一列代表了萼片或花瓣的长宽,一共4列,每一列代表某个被测量的鸢尾植物,iris.shape=(150,4)
y = iris.target
#target是一个数组,存储了data中每条记录属于哪一类鸢尾植物,所以数组的长度是150,所有不同值只有三个
random_state = np.random.RandomState(0)
#给定状态为0的随机数组
y = label_binarize(y, classes=[0, 1, 2])
n_classes = y.shape[1]
n_samples, n_features = X.shape
X  = np.c_[X, random_state.randn(n_samples, 200 * n_features)]
#添加合并生成特征测试数据集
X_train, X_test, y_train, y_test = train_test_split(X, y,
                                                    test_size=0.25,
                                                    random_state=0)
#根据此模型训练简单数据分类器
classifier = OneVsRestClassifier(svm.SVC(kernel="linear", probability=True,
                                 random_state=random_state))#线性分类支持向量机
y_score = classifier.fit(X_train, y_train).decision_function(X_test)
#用一个分类器对应一个类别, 每个分类器都把其他全部的类别作为相反类别看待。
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(n_classes):
    fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i])
    #计算ROC曲线面积
    roc_auc[i] = auc(fpr[i], tpr[i])
fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel())
roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])
import matplotlib.pyplot as plt
plt.figure()
lw = 2
plt.plot(fpr[2], tpr[2], color="darkorange",
         lw=lw, label="ROC curve (area = %0.2f)" % roc_auc[2])
plt.plot([0, 1], [0, 1], color="navy", lw=lw, linestyle="--")
plt.xlabel("FPR")
plt.ylabel("TPR")
plt.ylim([0.0, 1.0])
plt.xlim([0.0, 1.0])
plt.legend(loc="lower right")
plt.title("Precision-Recall")
plt.show()
以上就是Python机器学习利用鸢尾花数据绘制ROC和AUC曲线的详细内容,更多关于Python数据绘制ROC AUC的资料请关注脚本之家其它相关文章!
标签:
 消息!Python机器学习利用鸢尾花数据绘制ROC和AUC曲线
 天天精选!万科难解551亿广信资产包:身背金主对赌协议,两地块被政府收储
 微资讯!华晨宇带张碧晨及孩子做亲子鉴定,疑画面曝光,女方配合全程不悦
 当前快看:威海教育系统聚力办好101个为民办教育民生实事项目
 信用卡还不上被起诉怎么应对 每日快看
 无锡宜兴2.22亿挂牌一宗商住地 出让面积2.41万㎡ 每日速讯
 环球快报:沈阳:边吃边逛的彩电塔夜市
 六旬老人卫生院输液后在家中身亡,院方:诊疗流程没问题 全球热消息
 苹果2022年供应链名单曝光 陆企减少3家至49家 世界快看
 聚焦IPO | 美的子公司美智光电再度IPO,“老问题”未去 “新问题”又来
 奇迹3d翅膀怎么合成_奇迹3d翅膀怎么合
 新的OLED屏幕让AppleiPadPro更薄更光滑_环球速读
 5月至今尚未有私募基金完成登记备案,注销机构达67家
 全球资讯:戴拿奥特曼怪兽大全中国联盟_戴拿奥特曼怪兽大全
 客思控股(08173.HK)委任叶晓莹为授权代表
 常青科技:
公司不生产光刻胶。公司研发方向定位于国际领先、国内空白领域 每日速讯
 C视频丨大漠深处,直升机多弹种跨昼夜实弹射击训练 全球实时
 【宏观摘要】国内外宏观经济动态
 19年上海女博士抗癌失败去世,深情丈夫悉心照顾,一年后另结新欢-快资讯
 天天观焦点:坚持法治引领 构建营商环境新格局——同安区发改局举办《厦门经济特区优化营商环境条例》解读讲座X 关闭
X 关闭