Соответствие длины чувствительности и специфичности матрицы совпадений, но данные не могут иметь больше уровней, чем эталонный - PullRequest
0 голосов
/ 08 апреля 2020

Проблема:

Матрица путаницы, необходимая для измерения чувствительности и специфичности.

Проблема:

Для данных матрицы путаницы у меня есть уровни, которые соответствуют, в матрице путаницы данные не может иметь больше уровней, чем эталон, поэтому, когда мои уровни совпадают (например, ниже в списке), что тогда означает ошибка, относящаяся к «данным не может быть больше уровней, чем эталон»? ссылка - это model_prediction [last length () / str (). Моя зависимая переменная является факторной переменной.

Попытка усилий:

Для кода R сначала я запустил прогнозирование с результатами фактора и включил na.action:

loans_predict_fcm <- factor(predict(full, newdata = data_train, type = "response", na.action = na.pass))

С результатами из отдельной таблицы (), например, pred_table; Мне удалось вычислить чувствительность и специфичность, используя формулу. Однако я хотел бы подтвердить это с помощью confusionMatrix (). Но у меня возникают проблемы при работе confusionMatrix ().

Sensitivity <- 100*(pred_table[1,1])/sum(pred_table[1,1] + pred_table[1,1])
Specificity <- 100*(pred_table[2,2])/sum(pred_table[2,1] + pred_table[2,2])

Когда я пытаюсь запустить confusionMatrix () с факторизованным предикатом (). Затем проверьте уровни и определите, что они не совпадают, поэтому сбой confusionMatrix () для данных не может иметь больше уровней, чем эталонный, который в этом случае запускает model_prediction.

confusionMatrix(loans_predict_fcm, model_prediction, positive="1")
identical (levels(loans_predict_fcm), levels(model_prediction))
> FALSE
> length(loans_predict_fcm)
[1] 27724
> str(loans_predict_fcm)
 Factor w/ 27424 levels "0.13079979710253",..: 15967 9625 15966 10703 7830 12394 21291 15023 17920 18442 ...
 - attr(*, "names")= chr [1:27724] "11413" "2561" "25337" "1643" ...
> length(loans_train_data$statusRank)
[1] 27724
> str(loans_train_data$statusRank)
 Factor w/ 2 levels "Bad","Good": 2 2 2 1 1 2 2 2 1 2 ...
> length(model_prediction)
[1] 27724
> str(model_prediction)
 Factor w/ 2 levels "Bad","Good": 2 2 2 2 2 2 2 2 2 2 ...
> 

1 Ответ

0 голосов
/ 08 апреля 2020

Для проблемы чувствительности и специфичности матриц смешения имена столбцов и имена строк имели различия, поэтому я смог решить ее с помощью пользовательской функции, которая в основном была настроена на colnames () и rownames (), и создал матрицу вектор mat.or.ve c () для длины пропущенных имен столбцов.

...