gpt4 book ai didi

r - 如何使用PRROC包获取R中随机森林的ROC和PR的auc

转载 作者:行者123 更新时间:2023-11-30 09:48:44 25 4
gpt4 key购买 nike

我的数据资源:https://www.kaggle.com/mlg-ulb/creditcardfraud数据集高度不平衡,正类(欺诈)占所有交易的 0.172%,enter image description here enter image description here

我使用 PRROC 包来获取 ROC 曲线的 AUC,这是我的随机森林代码:

rf.model <- randomForest(Class ~ ., data = training, ntree = 2000, nodesize = 20)
rf_pred <- predict(rf.model, test,type="prob"

因此,正如预期的那样,rf_pred 应该返回每个类别的概率: enter image description here然后,我使用了以下代码:

fg_rf <- rf_pred[test$Class==1]
bg_rf <- rf_pred[test$Class==0]
roc_rf <- roc.curve(scores.class0 = fg_rf,scores.class1 = bg_rf,curve = T)

然而,ROC CURVE 结果并不如我预期 enter image description herePR曲线也出现同样的问题。是因为类(class)比例太不平衡吗?假设rf_pred返回0/1的概率,我怎样才能让fg_rf等于calss=1的概率,我的代码是:fg_rf <- rf_pred[test$Class==1]正确吗?

最佳答案

看看你的head(rf_pred)结果,很明显你的predict函数返回(硬)类(即 0/1),而不是概率分数,可能是由于您的 type="pro"拼写错误(应该是 type="prob" )。

scores.class0 & scores.class1 roc.curve 的参数方法应该是概率分数,而不是硬类预测。

更正 predict 中的拼写错误你应该没问题,但很可能你还需要切换分数 - 因为现在你将你的类(class) 1 分分配给 scores.class0 :

rf_pred <- predict(rf.model, test,type="prob")
fg_rf <- rf_pred[test$Class==1]
bg_rf <- rf_pred[test$Class==0]
roc_rf <- roc.curve(scores.class0 = bg_rf, scores.class1 = fg_rf, curve = T)

关于r - 如何使用PRROC包获取R中随机森林的ROC和PR的auc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48892049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com