我试图绘制一条ROC曲线来评估我使用逻辑回归包在Python中开发的预测模型的准确性.我计算了真阳性率和假阳性率; 但是,我无法弄清楚如何正确地使用这些matplotlib并计算AUC值.我怎么能这样做?
我正在尝试使用seaborn(python)绘制ROC曲线.使用matplotlib我只需使用该函数plot:
plt.plot(one_minus_specificity, sensitivity, 'bs--')
Run Code Online (Sandbox Code Playgroud)
where one_minus_specificity和sensitivity是两个配对值列表.
在seaborn中是否有简单的情节功能对应物?我看了一下画廊,但我没有找到任何简单的方法.
我正在运行一个逻辑模型,我预测了logit值.我用了 :
from sklearn import metrics
fpr, tpr, thresholds = metrics.roc_curve(Y_test,p)
Run Code Online (Sandbox Code Playgroud)
我知道metric.roc_auc_score将给出曲线下面积但是任何人都可以让我知道找到最佳截止点(阈值)的命令是什么.
我有一些模型,ROCR在预测类百分比的向量上使用包,我有一个性能对象.使用规范"tpr"绘制性能对象,"fpr"给出了ROC曲线.
我正在比较假阳性率(x)的某些阈值的模型.我希望从性能对象中获得真正的正率(y)的值.更重要的是,我想获得用于生成该点的类别百分比阈值.
在x-value不高于阈值的情况下最接近阈值的误报率()的索引号应该给出适当的真阳性率(y-value)的索引号.我不确定如何获得该索引值.
更重要的是,我如何获得用于表达这一点的类概率的阈值?
使用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曾经包含在以前版本的插入符中的函数不是答案 - 这是一个低级函数,如果您没有每个交叉验证样本的预测概率,则不能使用它.
有人可以解释一下如何用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) 是否可以使用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)
谢谢!
我正在绘制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) 我想计算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)
请告诉我它有什么问题.
我能够得到使用ROC曲线scikit-learn有
fpr,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.
roc ×10
python ×5
r ×5
plot ×3
matplotlib ×2
scikit-learn ×2
r-caret ×1
seaborn ×1
statistics ×1