Я пытаюсь получить участок AUC, работающий с использованием пакета AUC в R. Я не уверен в ошибке и новичок в этом fit - это обученная модель: test - это тестовые данныеAUC package - ошибка AUC - r программирование
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 (х): 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")
площади залезть под кривой
performance(roc_pred,"auc")@y.values головки (дт)
Что делает 'str (submit $ forecastions)' и 'str (submit $ already_crossed)' return? существуют ли какие-либо значения 'NA' в' already_crossed'? – bjoseph
Я думаю, что столбец «предсказания» содержит информацию от предсказания успехов и неудач (1 с и 0 с). Просто попробуйте использовать «submit $ predictionb» вместо «submit $ прогнозов» в вашем последнем фрагменте кода. – AntoniosK
Вы проезжаете два вектора в качестве прогноза, и когда вы делаете один вектор для фактических значений: auc (чувствительность (submit $ predions, submit $ already_crossed)), и вы нарушаете модель. Кроме того, у вас есть только 0 прогнозов, и кривая ROC не будет получена. Я скоро пришлю вам пример ... – AntoniosK