Какой формат прогноза должен быть входным для функции RO C - PullRequest
2 голосов
/ 27 мая 2020

Я пытаюсь вычислить RO C целевой переменной, которая является двоичной (0,1), по сравнению с предсказанием дерева решений.

Когда я устанавливаю значение прогноза как двоичное, это дает мне следующая ошибка:

> roc(as.numeric(pred),as.numeric(data$target))

Setting levels: control = 0, case = 1
Setting direction: controls < cases

Когда я устанавливаю значение прогноза как вероятность, это дает мне следующую ошибку:

> roc(pred[,2],as.numeric(data$target))

'response' has more than two levels. Consider setting 'levels' 
explicitly or using 'multiclass.roc' insteadSetting levels: 
control = 0.166666666666667, case = 0.232876712328767
Setting direction: controls < cases

Поэтому я не понимаю, какой формат мне следует установить к предсказанию, чтобы правильно рассчитать RO C? Почему моя функция показывает эти ошибки?

1 Ответ

0 голосов
/ 29 мая 2020

Если вы посмотрите на pRO C документацию по функциям roc , вы увидите, что формальное определение имеет следующий вид:

## Default S3 method:
roc(response, predictor, [...]

Следовательно, прогноз второй аргумент, а не первый, как вы используете. Поэтому ваш вызов должен выглядеть так:

roc(data$target, pred[,2])

Если вы забыли порядок, вы всегда можете использовать именованный аргумент, чтобы игнорировать порядок:

roc(predictor = pred[,2], response = data$target)

Также обратите внимание, что это не обязательно и даже не рекомендуется преобразовывать ответ в вектор numeri c, поэтому я удалил as.numeric из приведенных выше вызовов.

...