如何修复predict.naive_bayes在R中使用无预测功能

如何修复predict.naive_bayes在R中使用无预测功能,r,pca,predict,naivebayes,R,Pca,Predict,Naivebayes,我有一个45045个变量的数据框架,在R中只有90个观察值。我做了一个主成分分析来降低维度,我将使用14个主成分。我需要做预测,我想尝试使用朴素贝叶斯方法。我不能对转换后的数据使用预测函数,而且我不理解错误 下面是一些代码: data.pca <- prcomp(data) 标签向量是一个1到6级的因子,对于我试图预测结果的任何观察,结果只有1。例如,第50个观察值的标签为4。您可以尝试以下仅从代码中修改的代码 data.pca <- prcomp(data) newdata &

我有一个45045个变量的数据框架,在R中只有90个观察值。我做了一个主成分分析来降低维度,我将使用14个主成分。我需要做预测,我想尝试使用朴素贝叶斯方法。我不能对转换后的数据使用预测函数,而且我不理解错误

下面是一些代码:

data.pca <- prcomp(data)

标签向量是一个1到6级的因子,对于我试图预测结果的任何观察,结果只有1。例如,第50个观察值的标签为4。

您可以尝试以下仅从代码中修改的代码

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,])

data.pca您尚未在训练集和测试集中划分数据。还有一件事,你为什么要把
data=NULL
。它应该是
naive_bayes
行中的
data=newdata
。使用
pred Hi,当您想要使用公式界面时,您的
newdata
数据集应该包含变量
标签
和14个组件。然后您可以使用以下内容:
mod.nb有关如何使用
公式接口
矩阵/向量接口
的更多示例,请参阅扩展文档:最好,MichalThank,我想我可以使用标签和列分隔的向量,因此我将数据设置为NULL。当我把所有东西都放在一个数据框中时,它就工作了。
mod.nb <- naive_bayes(label ~ newdata$PC1+...+newdata$PC14, data = NULL)
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
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,])