我正在尝试使用 R 中的 AUC 包来获得 AUC 图。我不确定错误,这种拟合的新方法是经过训练的模型:测试是测试数据
test$going_to_cross <- predict(fit, test, type="prob")
prediction <- predict(fit, test, type="prob")
submit <- data.frame(cust_id = test$cust_id, already_crossed = test$flag_cross_over, predictions = prediction)
write.csv(submit, file = "../predictions /cross_sell_predictionsRF.csv", row.names = FALSE)
head(submit, 5)
print("predictions")
colnames(prediction) <- c("predictiona", "predictionb")
head(prediction)
which(submit$going_to_cross == 1)
print("names submit")
names(submit)
#predict_cross <- submit$going_to_cross.0
head(predict_cross, 5)
我在这里得到的输出为:
cust_id already_crossed predictions.0 predictions.1
280 14080465 0 0.436 0.564
281 24047747 0 0.218 0.782
282 10897483 0 0.606 0.394
283 14005276 0 0.448 0.552
284 18488402 0 0.284 0.716
[1] "predictions"
Out[317]:
predictiona predictionb
280 0.436 0.564
281 0.218 0.782
282 0.606 0.394
283 0.448 0.552
284 0.284 0.716
285 0.104 0.896
包中的代码是:
auc(sensitivity(submit$predictions, submit$already_crossed))
警告信息是:
警告消息:在 is.na(x) 中:is.na() 应用于“NULL”类型的非(列表或向量)
更新:
# get the data into single vectors
submit_pred <- matrix(submit$predictions.1)
submit_cross <- matrix(submit$already_crossed)
dt <- cbind(submit_pred, submit_cross)
dt <- matrix(dt)
names(dt) <- c("submit_pred", "submit_cross")
roc_pred <- prediction(dt$submit_pred, dt$submit_cross)
perf <- performance(roc_pred, "tpr", "fpr")
plot(perf, col="red")
abline(0,1,col="grey")
得到曲线下的面积
性能(roc_pred,“auc”)@y.values 头(dt)