机器学习()PR曲线绘制

目录

P-R 曲线绘制

Ground Truth


P-R 曲线绘制

Precision-查准率-预测出来的正例中正确的比例---找得对-(查准率高-宁缺毋滥

Recall-查全率-衡量正例被预测出来的比例---找得全-(查全率高-宁可错杀一百不能放过一个


    在机器学习中分类器往往输出的不是类别标号,而是属于某个类别的概率值,根据分类器的预测结果从大到小对样例进行排序,逐个把样例加入正例进行预测,算出此时的P、R值。

 

如下图: 

Inst#是样本序号,图中有20个样本,真实情况正例反例各有10个。

Class是ground truth(ground truth是什么?见文末!) 标签,p是positive样本(正例),n当然就是negative(负例)

score是我的分类器对于该样本属于正例的可能性的打分。因为一般模型输出的不是0,1的标注,而是小数,相当于置信度。

 

然后设置一个从高到低的阈值y,大于等于阈值y的被我正式标注为正例,小于阈值y的被我正式标注为负例。

显然,我设置n个阈值,我就能得到n种标注结果,评判我的模型好不好使,也就可能得到n个PR值对用来画PR曲线。
 



 

先用分数(score):0.9作为阈值(大于等于1为正例,小于1为反例),此时TP=1,FP=0,FN=9,故P=1,R=0.1。 
用0.8作为阈值,P=1,R=0.2。 
用0.7作为阈值,P=0.67,R=0.2。 
用0.6作为阈值,P=0.75,R=0.3。 
以此类推。。。 
最后得到一系列P、R值序列,就画出P-R曲线(示意图,不对应上面数据): 

 

Ground Truth

在看英文文献的时候,经常会看到Ground Truth这个词汇,翻译的意思是地面实况,放到机器学习里面,再抽象点可以把它理解为真值、真实的有效值或者是标准的答案

维基百科对Ground Truth在机器学习领域的解释是:

在机器学习中,“ground truth”一词指的是训练集对监督学习技术的分类的准确性。这在统计模型中被用来证明或否定研究假设。“ground truth”这个术语指的是为这个测试收集适当的目标(可证明的)数据的过程。

 

今天在看《Outlier Analysis》时,有句话: However, it is generally much harder to reduce bias in outlier ensembles because of the absence of ground truth.

放到对异常点的检测方面来理解这个ground truth就好理解了。在对异常点进行检测的时候,通过一些ensemble methods可以在一定程度上提高准确性,从而减少bias,但是由于对于异常点的定义本身就是一个问题,所以在对这些数据进行label的过程中,保证labeled data是正确的异常点也是个问题。

再举个例子,在图像识别中,一张图片是猫还是狗这个没有什么争议性,但是如果在时间序列中让你指出什么样的数据是 normal,什么样的数据是 abnormal,100个人可能会有100种回答,因为 normal 和 abnormal 之间没有什么明确的界限,所以在研究时间序列中的 outlier analysis 时,Ground Truth 也是一个不可避免的问题。
————————————————
版权声明:本文为CSDN博主「敲代码的quant」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/FrankieHello/article/details/80486167

 

P-R曲线

原文链接:https://blog.csdn.net/teminusign/article/details/51982877

原文链接:https://blog.csdn.net/u013249853/article/details/96132766

  • 24
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 以下是机器学习Python绘制PR曲线的示例代码: ```python from sklearn.metrics import precision_recall_curve import matplotlib.pyplot as plt import numpy as np y_true = np.array([0, 0, 1, 1, 1]) y_scores = np.array([0.1, 0.4, 0.35, 0.8, 0.9]) precision, recall, thresholds = precision_recall_curve(y_true, y_scores) plt.plot(recall, precision, linestyle='--', label='PR curve') plt.xlabel('Recall') plt.ylabel('Precision') plt.legend() plt.show() ``` 其中,y_true表示真实标签,y_scores表示模型输出的预测概率。precision_recall_curve函数会返回一组精确率、召回率和阈值,我们将这些数据绘制PR曲线即可。 ### 回答2: PR曲线是二元分类模型性能评估的重要指标之一,它可以衡量出在"有多少真实的数据预测成正样本的同时预测对了多少个真实的正样本"的性能,适用于不平衡数据集的情况。 在Python中,我们可以利用sklearn库,调用precision_recall_curve()函数绘制PR曲线。具体步骤如下: 1. 导入必要的库 ``` import matplotlib.pyplot as plt from sklearn.metrics import precision_recall_curve from sklearn.metrics import plot_precision_recall_curve ``` 2. 准备数据集 假设我们有一个二分类数据集,标签为1表示正样本,标签为0表示负样本。我们可以从csv文件中读取数据,或者利用一些数据生成的方法。 ``` X, y = make_classification(n_samples=10000, n_classes=2, weights=[0.95,0.05], random_state=42) ``` 3. 拆分数据集 由于绘制PR曲线需要使用测试集,所以我们需要把数据集拆分成训练集和测试集。 ``` from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 4. 训练模型 利用我们选择的二分类模型,例如Logistic回归或者随机森林模型等,从训练数据集中训练一个模型。 ``` from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier(n_estimators=100, random_state=42) clf.fit(X_train, y_train) ``` 5. 绘制PR曲线 利用precision_recall_curve()函数计算每个阈值下的准确率和召回率,然后绘制PR曲线。 ``` disp = plot_precision_recall_curve(clf, X_test, y_test) plt.show() ``` 以上是用Python绘制PR曲线的基本步骤,你可以根据实际需要进行微调和优化。 ### 回答3: PR曲线机器学习中用于评估二分类模型性能的重要指标之一。它是Precision与Recall的关系曲线,通过绘制Precision与Recall的关系曲线可以更直观、准确地评估模型性能。在Python中,我们可以使用Scikit-Learn库的以下函数来绘制PR曲线: from sklearn.metrics import precision_recall_curve import matplotlib.pyplot as plt # 假设y_true为真实标签,y_scores为分类模型输出的概率值 precision, recall, thresholds = precision_recall_curve(y_true, y_scores) # 绘制PR曲线图 plt.plot(recall, precision, label='PR curve') plt.xlabel('Recall') plt.ylabel('Precision') plt.title('Precision-Recall Curve') plt.legend(loc='best') plt.show() 其中,y_true为真实标签,y_scores为分类模型输出的概率值。函数precision_recall_curve可以返回precision、recall以及每个阈值的数值,即thresholds,这些数值可以用于后续的计算或可视化操作。绘制PR曲线使用Matplotlib库的plot函数,将recall作为横坐标、precision作为纵坐标,即可得到PR曲线。对于PR曲线的图像优化可以用title函数来添加标题,用xlabel和ylabel函数进行轴标签的添加以及legend函数添加图例。最后将PR曲线图用show函数显示。 绘制PR曲线,是对模型在正例(positive)和负例(negative)两个方面的表现都进行评估的一种方法,可以帮助用户更准确地判断模型的性能,具有重要的应用价值和研究意义。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值