随机分类器,也就是对于一个分类问题,随机猜测答案。理论上,随机分类器的性能是所有分类器的下界。对随机分类器的理解,可以帮助更好的理解分类器的性能指标。随机分类器的性能也可以作为评价分类器的一个基础。所以简单写了几行代码来研究一下随机分类器的性能。用的是scikit-learn包。

这里产生了一个正负样本比例为7:3的样本。由于是随机猜测,所以feature数据就不需要了。随机分类器对每个样本,输出一个[0, 1)之间的数作为正样本的概率。分类以0.5为阈值,评价了几个主要的指标,并画出ROC和Precision-recall曲线。

import numpy as np
import numpy.random as r
import sklearn.metrics as m
import pylab as pl def main():
size = 1000000
y_true = np.array([ 1 if i >= 0.3 else 0 for i in r.random(size) ], dtype=np.float32)
y_pred = r.random(size)
y_cls = np.array([ 1 if i >= 0.5 else 0 for i in y_pred ], dtype=np.float32)
print m.classification_report(y_true, y_cls) fpr, tpr, th = m.roc_curve(y_true, y_pred)
ax = pl.subplot(2, 1, 1)
ax.plot(fpr, tpr)
ax.set_title('ROC curve') precision, recall, th = m.precision_recall_curve(y_true, y_pred)
ax = pl.subplot(2, 1, 2)
ax.plot(recall, precision)
ax.set_ylim([0.0, 1.0])
ax.set_title('Precision recall curve') pl.show() if __name__ == '__main__':
main()

几个主要指标如下 。

             precision    recall  f1-score   support

        0.0       0.30      0.50      0.37    299977
1.0 0.70 0.50 0.58 700023 avg / total 0.58 0.50 0.52 1000000

ROC和Precision-recall曲线见下。

ROC曲线是一条y=x的直线,AUC=0.5。ROC曲线的横轴和纵轴分别是fpr和tpr,可以理解为将负例分为正例的概率,以及将正例分为正例的概率。注意,这里的分母都是实际的正例/负例数目。也就是说,ROC曲线反映了分类器对正例的覆盖能力和对负例的覆盖能力之间的权衡。

而Precision-recall曲线是一条y=0.7的直线,0.7为样本中正例的比例。横轴recall也就是tpr,反映了分类器对正例的覆盖能力。而总轴precision的分母是识别为正例的数目,而不是实际正例数目。precision反映了分类器预测正例的准确程度。那么,Precision-recall曲线反映了分类器对正例的识别准确程度和对正例的覆盖能力之间的权衡。对于随机分类器而言,其precision固定的等于样本中正例的比例,不随recall的变化而变化。

随机分类器的ROC和Precision-recall曲线的更多相关文章

  1. Precision/Recall、ROC/AUC、AP/MAP等概念区分

    1. Precision和Recall Precision,准确率/查准率.Recall,召回率/查全率.这两个指标分别以两个角度衡量分类系统的准确率. 例如,有一个池塘,里面共有1000条鱼,含10 ...

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

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

  3. Handling skewed data---trading off precision& recall

    preision与recall之间的权衡 依然是cancer prediction的例子,预测为cancer时,y=1;一般来说做为logistic regression我们是当hθ(x)>=0 ...

  4. TP Rate ,FP Rate, Precision, Recall, F-Measure, ROC Area,

    TP Rate ,FP Rate, Precision, Recall, F-Measure, ROC Area, https://www.zhihu.com/question/30643044 T/ ...

  5. 评价指标整理:Precision, Recall, F-score, TPR, FPR, TNR, FNR, AUC, Accuracy

    针对二分类的结果,对模型进行评估,通常有以下几种方法: Precision.Recall.F-score(F1-measure)TPR.FPR.TNR.FNR.AUCAccuracy   真实结果 1 ...

  6. Classification week6: precision & recall 笔记

    华盛顿大学 machine learning :classification  笔记 第6周 precision & recall 1.accuracy 局限性 我们习惯用 accuracy ...

  7. 查准与召回(Precision & Recall)

    Precision & Recall 先看下面这张图来理解了,后面再具体分析.下面用P代表Precision,R代表Recall 通俗的讲,Precision 就是检索出来的条目中(比如网页) ...

  8. 目标检测的评价标准mAP, Precision, Recall, Accuracy

    目录 metrics 评价方法 TP , FP , TN , FN 概念 计算流程 Accuracy , Precision ,Recall Average Precision PR曲线 AP计算 A ...

  9. Precision,Recall,F1的计算

    Precision又叫查准率,Recall又叫查全率.这两个指标共同衡量才能评价模型输出结果. TP: 预测为1(Positive),实际也为1(Truth-预测对了) TN: 预测为0(Negati ...

随机推荐

  1. Scrum Meeting---Two(2015-10-26)

    这次会议主要有两个方面 一.讨论项目 经过我们团队的激烈讨论,我们团队决定专注于做二手交易这一块.即将之前决定要做的学习经验交流以及校园交由这两块删除. 二.后两天的任务规划 以下便是我们的任务规划: ...

  2. Git与Repo入门(转载)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAykAAADuCAIAAACyDd+sAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xu ...

  3. JavaWeb学习总结(十)--JDBC之MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 但是,在mysql ...

  4. jQuery中其他

    hide:  隐藏 $('img').hide(); show:显示 $('img').show(); 单选多选下拉菜单 选中状态checked ($('.radio:checked')); 单选 ( ...

  5. eclipse 下的 merge 是如何实现的

    1 我从eclipse里面新建一个workspace2 新建一个分支3 再新建另外一个分支4 回到原分支, 修改某一行,比如a.txt的85行5 提交git add commit6 切换到新分支7 修 ...

  6. 删除内容并不能删除field structure -- features_revert

    把内容删了但field structure还在, 在manage_field界面,field还在.http://drupal.stackexchange.com/questions/21501/rev ...

  7. imageview圆角的实现

    介绍一种简单的.另类的实现,就是把图片在显示前处理成圆角的,但是不改变存储的图片.相当于经过了图像过滤. 需要调用的图像工具类是 package com.gaosi.util; /** * @auth ...

  8. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 增、查、改、删操作

    Create, Read, Update, and Delete operations¶ 5 of 5 people found this helpful By Tom Dykstra The Con ...

  9. 使用PowerShell简化我的工作

    欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...

  10. webstorm注释写出的提示

    写出这种代码提示的方法是 在一个函数上方打出 /** 然后敲回车就出出来 没达到上面的效果,自己手动写上即可. 这样的好处是: 当你写代码用到此方法的时候会有参数类型提示,如图