当前位置: 首页 > 编程笔记 >

解决ROC曲线画出来只有一个点的问题

韶兴德
2023-03-14
本文向大家介绍解决ROC曲线画出来只有一个点的问题,包括了解决ROC曲线画出来只有一个点的问题的使用技巧和注意事项,需要的朋友参考一下

之前在做kaggle比赛时,有个比赛使用AUC来评比的,当时试着画了ROC曲线,结果出来的下图这样的图形。跟平时的ROC曲线差好远,就只有一个点。而别人家的都是很多转折的,为啥我的不一样。

我的图如下:

正常的图(sklearn上面截取的):

思考过后,发现原来:

ROC曲线,一般适用于你的分类器输出一个“概率值”,即这个样本属于某个类的概率是多少。 如此的话,你就需要设定一个阈值, 大于这个阈值属于正类,小于这个阈值属于负类。

从而,对于这个阈值P0, 就会得到对应的TPR, FPR, 也就是ROC曲线上的一个点,你设置不同的阈值,就会得到不同的TPR, FPR, 从而构成ROC曲线。

通常来说 阈值降低,即进入正类的门槛变低, TPR会变大,但是FPR也会变大, 看他们谁变的快。

之前画线的时候直接用了分类的预测值,而没有用上概率这玩意,被划分为正类的概率。。修改下程序,求多一个概率就能画出正确的图形啦。

如果你用GDBT算法的时候:

gbc = GradientBoostingClassifier()
gbc.fit(x_train, y_train)
resu = gbc.predict(x_test) #进行预测
y_pred_gbc = gbc.predict_proba(x_test)[:,1] ###这玩意就是预测概率的
fpr, tpr, threshold = roc_curve(y_test, y_pred_gbc) ###画图的时候要用预测的概率,而不是你的预测的值
plt.plot(fpr, tpr, 'b', label='AUC = %0.2f' % rocauc)#生成ROC曲线
plt.legend(loc='lower right')
plt.plot([0, 1], [0, 1], 'r--')
plt.xlim([0, 1])
plt.ylim([0, 1])
plt.ylabel('真正率')
plt.xlabel('假正率')
plt.show()

以上这篇解决ROC曲线画出来只有一个点的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 我训练了一名CNN,将图像分为5类。但是,当我试图绘制每个类别相对于其他类别的曲线时,所有5个类别几乎都有一条对角线曲线,其约为0.5。我不知道出了什么问题。 该模型的准确率应该在86%左右。 代码如下: "prediction_prob"变量包含: 而“正确”变量包含每个测试图像的正确标签: 我想我遵循了网站上提到的内容。 生成的tpr[i]和fpr[i]变量变为线性相关,因此AUC变为0.5

  • 我目前正在用js尝试SVG路径,我想用一条曲线连接两点。以下是我目前的进展: CodePen版本在这里 看来我需要在路径中添加另一条曲线。 我还找到了这个工作的CodePen。

  • 本文向大家介绍利用python画出AUC曲线的实例,包括了利用python画出AUC曲线的实例的使用技巧和注意事项,需要的朋友参考一下 以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码。 直接上代码: 补充拓展:Python机器学习中的roc_auc曲线绘制 废话不多说,直接上代码 以上这篇利用python画出AUC曲线的实例就是小编分享给大家的全部内容了,希

  • 本文向大家介绍浅谈ROC曲线的最佳阈值如何选取,包括了浅谈ROC曲线的最佳阈值如何选取的使用技巧和注意事项,需要的朋友参考一下 为了获取ROC曲线的最佳阈值,需要使用一个指标--约登指数,也称正确指数。 借助于matlab的roc函数可以得出计算。 至此计算结束了。 补充拓展:利用阈值分割目标图像 一.全局阈值 方法一:OTSU方法 otsu法(最大类间方差法,有时也称之为大津算法)使用的是聚类的

  • 问题描述: 我使用three.js来渲染模型,然后我是打算实现分层渲染的效果,所以模型按照层数给到了我,所以就是多个模型一起渲染。 可以看到下面的图片,是有很多模型数据的。我是使用new THREE.Object3D() 或者 new THREE.Group() 来集合这些模型的,然后scene.add(floorGroup)。scene里面的确也是有这些模型数据的存在。 但是实际渲染的时候却只有

  • 实际的y值是y=[0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 1. 0. 1. 0. 1. 0. 0. 1. 1. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.