如何使用 R 中经过训练的分类器预测新数据集?

How to predict new data set using trained classifier in R?

我想使用经过训练的分类器来预测变量(鸢尾花物种)在 R 中如何实现?为简单起见,我生成了一个不包含 Species 变量的人工 iris_unknown 集。我希望分类器预测 iris_unknown.

中的 Species 变量
library(caret)

trainIndex <- caret::createDataPartition(iris$Species, p = 0.5, list = FALSE)
irisTrain <- iris[ trainIndex,]
iris_unknown  <- iris[-trainIndex,][,-5] #delete last column species to make unknown variable
model_nnet <- train(irisTrain, irisTrain$Species, method = 'nnet', importance = TRUE)

pred_annFit <- predict(model_nnet, newdata = iris_unknown)

我收到错误:

Error: 'eval(predvars, data, env)': object 'Species' not found

您在训练模型时提供了 Species 列,您不应该这样做,因为它将被使用。如果您在测试 data.frame 中包含标签并不重要,因为如果您的模型经过训练,它将不会使用该列。所以像这样:

iris_unknown  <- iris[-trainIndex,-5]
model_nnet <- train(irisTrain[,-5], irisTrain$Species, method = 'nnet', importance = TRUE)

pred_annFit <- predict(model_nnet, newdata = iris_unknown)

这是一个令人难以置信的向量,您可以将其放入您的数据框中:

str(pred_annFit)
 Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

让我们将向量预测放回:

iris_unknown$prediction = pred_annFit