我想使用一个经过训练的分类器来预测变量(虹膜物种(在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列,不应该这样做,因为这将被使用。如果您在测试数据框架中包含标签,这并不重要,因为如果您的模型是用训练的,它将不会使用该列。这样的东西:
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