Начал писать этот вопрос, а затем выяснил ответ. Собираюсь поместить его сюда для потомков, так как было трудно найти ответы на это.Почему naiveBayes возвращает все NA для многоклассической классификации в R?
Я пытаюсь использовать классификатор naiveBayes из пакета e1071. Кажется, что нет никаких проблем с получением прогнозов для новых данных, но мне действительно нужны оценки вероятности для классов новых данных.
Пример:
> model <- naiveBayes(formula=as.factor(V11)~., data=table, laplace=3)
> predict(model, table[,1:10])
[1] 4 4 4 4 4 4 4 4 1 1 1 3 3 1 1
> predict(model, table[,1:10], type="raw")
1 2 3 4
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
[5,] NA NA NA NA
[6,] NA NA NA NA
[7,] NA NA NA NA
[8,] NA NA NA NA
[9,] NA NA NA NA
[10,] NA NA NA NA
[11,] NA NA NA NA
[12,] NA NA NA NA
[13,] NA NA NA NA
[14,] NA NA NA NA
[15,] NA NA NA NA
Это кажется абсурдным мне, так как тот факт, что модель способна выводить предсказания означает, что он должен иметь оценки вероятности для классов. Что вызывает это странное поведение?
Некоторые вещи, которые я уже пытались без успеха:
- добавив тип = «сырым» для построения модели вызова.
- Использование NaiveBayes функции из пакета Klar вместо (который не может справиться с
Пример некоторых данных, который производит эту ошибку:.
table[1:5,]
V1 V2 V3 V4 V5 V6 V7 V8 V9
1 0 0 0.000000 0.0000000 0.000000 0.0000000 0.6711444 0.7110409 0.0000000
2 0 0 0.000000 0.0000000 -1.345804 2.1978370 0.6711444 0.7110409 0.0000000
3 0 0 1.923538 -3.6718725 0.000000 0.0000000 0.0000000 0.0000000 0.8980172
4 0 0 1.923538 -0.4079858 0.000000 0.0000000 0.0000000 0.0000000 0.8980172
5 0 0 0.000000 0.0000000 -1.345804 0.2930449 0.6711444 0.7110409 0.0000000
V10 V11
1 0.0000000 6
2 0.0000000 3
3 -3.1316213 2
4 -0.2170431 5
5 0.0000000 4
Чтобы сделать его более воспроизводимым, было бы здорово, если бы вы могли бы добавить некоторые данные с которыми мы могли бы справиться с той же ошибкой. – Arun
@ Arun уверен. Я сейчас положу немного. –
благодарит вас за рассмотрение моих предложений. Одна вещь. Вы указываете 'as.factor (V17)' в своем коде, но в данных есть 11 столбцов. Я что-то пропустил здесь или должен быть больше столбцов в 'таблице'? Также 'dput (head (table))' возможно, лучше скопировать/вставить ваши данные, чтобы другие могли воспроизводить. – Arun