一、基础理解

 1)定义

  • ROC(Receiver Operation Characteristic Curve)
  • 定义:描述 TPR 和 FPR 之间的关系;
  • 功能:应用于比较两个模型的优劣;
  1. 模型不限于是否通过极度偏斜的数据训练所得
  2. 比较方式:ROC 曲线与坐标图形边界围成的面积,越大模型越优;
  1. TPR(True Positive Rate):真正率;被预测为正的正样本结果数 / 正样本实际数:TPR = TP /(TP + FN);
  2. TNR(True Negative Rate):真负率;被预测为负的负样本结果数 / 负样本实际数:TNR = TN /(TN + FP) ;
  3. FPR(False Positive Rate):假正率;被预测为正的负样本结果数 /负样本实际数:FPR = FP /(TN + FP) ;
  4. FNR(False Negative Rate):假负率;被预测为负的正样本结果数 / 正样本实际数:FNR = FN /(TP + FN) ;
  • 召回率(Recall)和精度(Precise)是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量;

 2)与 P - R 曲线的区别

  • P - R 曲线:应用于判定由极度有偏数据所训练的模型的优劣;
  • ROC 曲线:应用于比较两个模型的优劣;
  1. 模型:可以是同样算法不同超参数所得的不同模型,也可以是不同算法所得的不同模型;

 3)TPR 和 FPR 的关系

  • 关系
  1. 随着阈值 threshold 的增大,FPR 和 TPR 都逐渐减小;
  2. FPR 和 TPR 称正相关关系,FPR 越高,TPR 相应的也越高;

二、代码实现 FPR 和 TPR,并绘制 ROC 曲线

 1)封装

  • TPR

    def TPR(y_true, y_predict):
    tp = TP(y_true, y_predict)
    fn = FN(y_true, y_predict)
    try:
    return tp / (tp + fn)
    except:
    return 0.
  • FPR
    def FPR(y_true, y_predict):
    fp = FP(y_true, y_predict)
    tn = TN(y_true, y_predict)
    try:
    return fp / (fp + tn)
    except:
    return 0.

 2)例

  • 求 TPR 和 FPR

    import numpy as np
    from sklearn import datasets digits = datasets.load_digits()
    X = digits.data
    y = digits.target.copy()
    y[digits.target==9] = 1
    y[digits.target!=9] = 0 from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666) from sklearn.linear_model import LogisticRegression
    log_reg = LogisticRegression()
    log_reg.fit(X_train, y_train)
    decision_scores = log_reg.decision_function(X_test) from playML.metrics import FPR, TPR fprs = []
    tprs = []
    thresholds = np.arange(np.min(decision_scores), np.max(decision_scores), 0.1) for threshold in thresholds:
    # dtype='int':将数据类型从 bool 型转为 int 型;
    y_predict = np.array(decision_scores >= threshold, dtype='int')
    fprs.append(FPR(y_test, y_predict))
    tprs.append(TPR(y_test, y_predict))
  • 绘制 ROC 曲线

    import matplotlib.pyplot as plt
    plt.plot(fprs, tprs)
    plt.show()

  • 分析:

  1. ROC 曲线与图形边界围成的面积,作为衡量模型优劣的标准,面积越大,模型越优;
  2. 可以是同样算法不同超参数所得的不同模型,也可以是不同算法所得的不同模型;

三、scikit-learn 中的ROC

  • 模块及使用格式

    from sklearn.metrics import roc_curve
    
    fprs, tprs, thresholds = roc_curve(y_test, decision_scores)
  • 计算 ROC 曲线与坐标轴围成的面积:称 ROC 的 auc;

  • 面积越大,模型越优;

  • from sklearn.metrics import roc_auc_score
    
    roc_auc_score(y_test, decision_scores)

机器学习:评价分类结果(ROC 曲线)的更多相关文章

  1. 机器学习性能度量指标:ROC曲线、查准率、查全率、F1

    错误率 在常见的具体机器学习算法模型中,一般都使用错误率来优化loss function来保证模型达到最优. \[错误率=\frac{分类错误的样本}{样本总数}\] \[error=\frac{1} ...

  2. ROC曲线绘制

    ROC 曲线绘制 个人的浅显理解:1.ROC曲线必须是针对连续值输入的,通过选定不同的阈值而得到光滑而且连续的ROC曲线,故通常应用于Saliency算法评价中,因为可以选定0~255中任意的值进行阈 ...

  3. scikit-learn机器学习(二)逻辑回归进行二分类(垃圾邮件分类),二分类性能指标,画ROC曲线,计算acc,recall,presicion,f1

    数据来自UCI机器学习仓库中的垃圾信息数据集 数据可从http://archive.ics.uci.edu/ml/datasets/sms+spam+collection下载 转成csv载入数据 im ...

  4. [机器学习]-分类问题常用评价指标、混淆矩阵及ROC曲线绘制方法

    分类问题 分类问题是人工智能领域中最常见的一类问题之一,掌握合适的评价指标,对模型进行恰当的评价,是至关重要的. 同样地,分割问题是像素级别的分类,除了mAcc.mIoU之外,也可以采用分类问题的一些 ...

  5. 机器学习:分类算法性能指标之ROC曲线

    在介绍ROC曲线之前,先说说混淆矩阵及两个公式,因为这是ROC曲线计算的基础. 1.混淆矩阵的例子(是否点击广告): 说明: TP:预测的结果跟实际结果一致,都点击了广告. FP:预测结果点击了,但是 ...

  6. 机器学习:评价分类结果(Precision - Recall 的平衡、P - R 曲线)

    一.Precision - Recall 的平衡 1)基础理论 调整阈值的大小,可以调节精准率和召回率的比重: 阈值:threshold,分类边界值,score > threshold 时分类为 ...

  7. ROC曲线-阈值评价标准

    ROC曲线指受试者工作特征曲线 / 接收器操作特性曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性 ...

  8. 机器学习常见的几种评价指标:精确率(Precision)、召回率(Recall)、F值(F-measure)、ROC曲线、AUC、准确率(Accuracy)

    原文链接:https://blog.csdn.net/weixin_42518879/article/details/83959319 主要内容:机器学习中常见的几种评价指标,它们各自的含义和计算(注 ...

  9. 机器学习之分类器性能指标之ROC曲线、AUC值

    分类器性能指标之ROC曲线.AUC值 一 roc曲线 1.roc曲线:接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性 ...

随机推荐

  1. 深入理解JVM1

    1 Java技术与Java虚拟机 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言.Java类文件格式.Java虚拟机和Java应用程 ...

  2. k-近邻算法 标签分类

    k-近邻算法根据特征比较,然后提取样本集中特征最相似数据(最邻近)的分类标签.那么,如何进行比较呢? 怎么判断红色圆点标记的电影所属的类别呢? 如下图所示. 答:距离度量.这个电影分类的例子有2个特征 ...

  3. 简单web作业---书籍介绍的相关网页编写

    老师布置的web作业,我做了3个页面,其中有利用老师的css代码! 我有添加背景音乐,下面的是主界面的代码. <!DOCTYPE html> <html> <head&g ...

  4. linux与windows 通过SecureCRT进行文件传输方式

    linux与windows 通过SecureCRT进行文件传输方式 方式一:lrzsz是一款在Linux里可代替ftp上传和下载的程序.(小文件推荐,以4G为界限) # rz -bash: rz: c ...

  5. 查找和删除倒数第n个节点的问题

    class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } public class NthNodeFromEnd ...

  6. Spring Boot 注释

    1.@RestController@RestController ≍ @Controller + @ResponseBody在Controller文件 public class xxxx 前面加用于返 ...

  7. R语言可视化

    R语言基础(一) 可视化基础   ##数据获取 x1=round(runif(100,min=80,max=100)) x2=round(rnorm(100,mean=80, sd=7)) x3=ro ...

  8. ES6 类(Class)基本用法和静态属性+方法详解

    原文地址:http://blog.csdn.net/pcaxb/article/details/53759637 ES6 类(Class)基本用法和静态属性+方法详解 JavaScript语言的传统方 ...

  9. LeetCode OJ:Subsets(子集)

    Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must ...

  10. 剑指offer--4.斐波那契数列

    int最大范围(有符号情况下,从第0项0开始)能取到第46项1836311903,47项溢出 时间限制:1秒 空间限制:32768K 热度指数:473928 题目描述 大家都知道斐波那契数列,现在要求 ...