2015-12-08 5 views
0

Я создаю прогностическую модель в R с помощью «каретки», и я не понимаю, как работает функция «предсказать».R прогнозирует меньше случаев, когда набор данных

У меня есть тестирование набора данных с 222 экземпляров, но когда я выполнить следующую команду:

j48Probs <- predict(j48Model3x10cv, newdata = testing, type = "prob") 

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

j48Classes <- predict(j48Model3x10cv, newdata = testing, type = "raw") 
confusionMatrix(data=j48Classes, testing$Survived) 

Error in table(data, reference, dnn = dnn, ...) : 
all arguments must have the same length 

Что может быть?

Большое вам спасибо!

+0

Есть ли недостающие значения в ваших данных? – Heroka

+0

Отсутствуют значения в наборе данных поезда – jartymcfly

ответ

0

В вашем тестовом наборе должны быть недостающие значения. Одним из вариантов прогноза является na.action, и это стандартное значение, установленное для na.omit. Это означает, что любая запись, содержащая недостающие данные в одном из предикторов, будет проигнорирована.

Возьмите набор данных для тестирования и сделайте nrow(na.omit(testing). Он покажет вам, сколько строк будет использовано для прогнозирования. В вашем случае это, вероятно, возвращает 177 записей.

И эта проблема перевернута в confusionmatrix, вы пытаетесь сравнить 177 прогнозов с 222 ярлыками.

Вы можете установить na.action = NULL, но это вернет предсказания NA. Это может быть или не иметь смысла. В некоторых случаях неспособность предсказать классификацию также является информацией. Вы также можете попробовать впутать недостающие данные.

0

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

1.- не опускают их. 2.-опустить их также в тестовом наборе.

1.- Я решил, что таким образом:

j48Probs <- predict(j48Model3x10cv, newdata = testing, type = "prob", na.action = na.pass) 

j48Classes <- predict(j48Model3x10cv, newdata = testing, type = "raw", na.action = na.pass) 
confusionMatrix(data=j48Classes, testing$Survived) 

2.- Я решил так:

testing <- (na.omit(testing)