Как исправить функциюgnast.bayes, не используя функции для прогнозирования в R - PullRequest
0 голосов
/ 12 октября 2019

У меня есть фрейм данных с 45045 переменными и только 90 наблюдениями в R. Я сделал PCA, чтобы уменьшить размерность, и я буду использовать 14 основных компонентов. Мне нужно делать прогнозы, и я хочу попробовать использовать метод Наивного Байеса. Я не могу использовать функцию прогнозирования с преобразованными данными, и я не понимаю ошибку.

Вот код:

data.pca <- prcomp(data)

Я буду использовать 14 ПК:

newdata <- as.data.frame(data.pca$x[,1:14]) #dimension: 90x14

Обучение:

библиотека (naivebayes)

mod.nb <- naive_bayes(label ~ newdata$PC1+...+newdata$PC14, data = NULL)

Попробуйте предсказать 50-е наблюдение:

test.pca <- predict(data.pca, newdata = data[50,])

test.pca <- as.data.frame(test.pca)

test.pca <- test.pca[,1:14]

pred <- predict(mod.nb, test.pca)

Я получаю следующие ошибки:

predict.naive_bayes(): Only 0 feature(s) out of 14 defined in the naive_bayes object "mod.nb" are used for prediction.

predict.naive_bayes(): No feature in the newdata corresponds to probability tables in the object. Classification is done based on the prior probabilities

Вектор меток является фактором с уровнями от 1 до 6, и для любого наблюдения, которое я пытаюсь предсказать, результат равен только 1. Например, 50-е наблюдение имеет метку 4.

1 Ответ

0 голосов
/ 12 октября 2019

Вы можете попробовать следующий код, модифицированный только из вашего кода

data.pca <- prcomp(data)

newdata <- as.data.frame(data.pca$x[,1:14]) library(naivebayes)

mod.nb <- naive_bayes(label ~ newdata$PC1+...+newdata$PC14, data = newdata)

test.pca <- predict(mod.nb, newdata = newdata[50,])

...