标签: roc

如何在Python中绘制ROC曲线

我试图绘制一条ROC曲线来评估我使用逻辑回归包在Python中开发的预测模型的准确性.我计算了真阳性率和假阳性率; 但是,我无法弄清楚如何正确地使用这些matplotlib并计算AUC值.我怎么能这样做?

python statistics plot matplotlib roc

60
推荐指数
11
解决办法
13万
查看次数

使用seaborn的简单线条图

我正在尝试使用seaborn(python)绘制ROC曲线.使用matplotlib我只需使用该函数plot:

plt.plot(one_minus_specificity, sensitivity, 'bs--')
Run Code Online (Sandbox Code Playgroud)

where one_minus_specificitysensitivity是两个配对值列表.

在seaborn中是否有简单的情节功能对应物?我看了一下画廊,但我没有找到任何简单的方法.

python plot matplotlib roc seaborn

52
推荐指数
2
解决办法
8万
查看次数

Roc曲线和切断点.蟒蛇.

我正在运行一个逻辑模型,我预测了logit值.我用了 :

 from sklearn import metrics
 fpr, tpr, thresholds = metrics.roc_curve(Y_test,p)
Run Code Online (Sandbox Code Playgroud)

我知道metric.roc_auc_score将给出曲线下面积但是任何人都可以让我知道找到最佳截止点(阈值)的命令是什么.

python roc logistic-regression

42
推荐指数
5
解决办法
3万
查看次数

从ROC曲线获得阈值

我有一些模型,ROCR在预测类百分比的向量上使用包,我有一个性能对象.使用规范"tpr"绘制性能对象,"fpr"给出了ROC曲线.

我正在比较假阳性率(x)的某些阈值的模型.我希望从性能对象中获得真正的正率(y)的值.更重要的是,我想获得用于生成该点的类别百分比阈值.

x-value不高于阈值的情况下最接近阈值的误报率()的索引号应该给出适当的真阳性率(y-value)的索引号.我不确定如何获得该索引值.

更重要的是,我如何获得用于表达这一点的类概率的阈值?

r roc

34
推荐指数
3
解决办法
3万
查看次数

来自插入符号中训练数据的ROC曲线

使用R包插入符号,如何根据train()函数的交叉验证结果生成ROC曲线?

说,我做以下事情:

data(Sonar)
ctrl <- trainControl(method="cv", 
  summaryFunction=twoClassSummary, 
  classProbs=T)
rfFit <- train(Class ~ ., data=Sonar, 
  method="rf", preProc=c("center", "scale"), 
  trControl=ctrl)
Run Code Online (Sandbox Code Playgroud)

训练函数遍历一系列mtry参数并计算ROC AUC.我想看看相关的ROC曲线 - 我该怎么做?

注意:如果用于采样的方法是LOOCV,那么rfFit将在rfFit$pred插槽中包含一个非空数据帧,这似乎正是我所需要的.但是,我需要用于"cv"方法(k-fold验证)而不是LOO.

另外:不,roc曾经包含在以前版本的插入符中的函数不是答案 - 这是一个低级函数,如果您没有每个交叉验证样本的预测概率,则不能使用它.

r roc r-caret

24
推荐指数
2
解决办法
3万
查看次数

使用ROCR包的R中的ROC曲线

有人可以解释一下如何用ROCR绘制ROC曲线.我知道我应该先跑:

prediction(predictions, labels, label.ordering = NULL)
Run Code Online (Sandbox Code Playgroud)

然后:

performance(prediction.obj, measure, x.measure="cutoff", ...)
Run Code Online (Sandbox Code Playgroud)

我不清楚预测和标签是什么意思.我创建了一个带有ctree和cforest的模型,我希望它们的ROC曲线最终能够进行比较.在我的例子中,class属性是y_n,我想这应该用于标签.但预测呢?以下是我所做的步骤(数据集名称= bank_part):

pred<-cforest(y_n~.,bank_part)
tablebank<-table(predict(pred),bank_part$y_n)
prediction(tablebank, bank_part$y_n)
Run Code Online (Sandbox Code Playgroud)

运行最后一行后,我收到此错误:

Error in prediction(tablebank, bank_part$y_n) : 
Number of cross-validation runs must be equal for predictions and labels.
Run Code Online (Sandbox Code Playgroud)

提前致谢!

这是另一个例子:我有训练数据集(bank_training)和测试数据集(bank_testing),我运行了一个randomForest,如下所示:

bankrf<-randomForest(y~., bank_training, mtry=4, ntree=2,    
keep.forest=TRUE,importance=TRUE) 
bankrf.pred<-predict(bankrf, bank_testing, type='response')
Run Code Online (Sandbox Code Playgroud)

现在bankrf.pred是一个因子对象,标签为c =("0","1").不过,我不知道如何绘制ROC,因为我会陷入预测部分.这就是我的工作

library(ROCR) 
pred<-prediction(bankrf.pred$y, bank_testing$c(0,1) 
Run Code Online (Sandbox Code Playgroud)

但这仍然是不正确的,因为我收到错误消息

Error in bankrf.pred$y_n : $ operator is invalid for atomic vectors
Run Code Online (Sandbox Code Playgroud)

r roc

22
推荐指数
3
解决办法
6万
查看次数

一个图ROCR中的多个ROC曲线

是否可以使用ROCR包在同一图中绘制不同分类器的roc曲线?我试过了:

>plot(perf.neuralNet, colorize=TRUE)
>lines(perf.randomForest)
Run Code Online (Sandbox Code Playgroud)

但我得到:

Error en as.double(y) : 
  cannot coerce type 'S4' to vector of type 'double'
Run Code Online (Sandbox Code Playgroud)

谢谢!

plot r roc

22
推荐指数
1
解决办法
4万
查看次数

用ROCR和pROC绘制R中的ROC

我正在绘制ROC并测量部分AUC作为生态位模型质量的度量.当我在R工作时,我正在使用ROCR和pROC包.我会选择一个使用,但就目前而言,我只是想看看它们是如何表现的,以及是否能更好地满足我的需求.

令我困惑的一件事是,在绘制ROC时,轴如下:

ROCR

x axis: 'true positive rate' 0 -> 1
y axis: 'false positive rate', 0 -> 1
Run Code Online (Sandbox Code Playgroud)

PROC

x axis: 'sensitivity' 0 -> 1
y axis: 'specificity' 1 -> 0. 
Run Code Online (Sandbox Code Playgroud)

但如果我使用两种方法绘制ROC,它们看起来完全相同.所以我只想确认一下:

true positive rate = sensitivity

false positive rate = 1 - specificity.
Run Code Online (Sandbox Code Playgroud)

这是一个可重复的例子:

obs<-rep(0:1, each=50)
pred<-c(runif(50,min=0,max=0.8),runif(50,min=0.3,max=0.6))
plot(roc(obs,pred))

ROCRpred<-prediction(pred,obs)
plot(performance(ROCRpred,'tpr','fpr'))
Run Code Online (Sandbox Code Playgroud)

r roc

20
推荐指数
3
解决办法
2万
查看次数

ValueError:数据不是二进制,并且未指定pos_label

我想计算roc_auc_score,但我得到了跟随错误.

"ValueError: Data is not binary and pos_label is not specified"
Run Code Online (Sandbox Code Playgroud)

我的代码片段如下:

import numpy as np
from sklearn.metrics import roc_auc_score
y_scores=np.array([ 0.63, 0.53, 0.36, 0.02, 0.70 ,1 , 0.48, 0.46, 0.57])
y_true=np.array(['0', '1', '0', '0', '1', '1', '1', '1', '1'])
roc_auc_score(y_true, y_scores)
Run Code Online (Sandbox Code Playgroud)

请告诉我它有什么问题.

python roc scikit-learn

20
推荐指数
1
解决办法
2万
查看次数

scikit-learn - 具有置信区间的ROC曲线

我能够得到使用ROC曲线scikit-learnfpr,tpr,thresholds = metrics.roc_curve(y_true,y_pred, pos_label=1),其中y_true基于价值观的名单上我的黄金标准(即0负和1为正的情况下),并且y_pred是分数(例如一个对应列表,0.053497243,0.008521122,0.022781548,0.101885263,0.012913795,0.0,0.042881547[...])

我试图弄清楚如何在该曲线上添加置信区间,但是没有找到任何简单的方法来使用sklearn.

python confidence-interval roc scikit-learn

19
推荐指数
2
解决办法
1万
查看次数