单输入data.frame而不是testset.csv在R中的randomForest代码中失败

时间:2018-04-15 07:20:08

标签: r random-forest

我编写了一个R脚本,该脚本成功运行并预测输出,但仅当具有多个条目的csv作为输入传递给分类器时。

training_set = read.csv('finaldata.csv')
library(randomForest)
set.seed(123)
classifier = randomForest(x = training_set[-5],
                      y = training_set$Song,
                      ntree = 50)

test_set = read.csv('testSet.csv')
y_pred = predict(classifier, newdata = test_set)

上面的代码成功运行,但我没有给分类器提供10+个输入,而是希望将data.frame作为单个输入传递给此分类器。除了这个,它在其他分类器中有效,为什么? 所以下面的代码不起作用并抛出错误 -

y_pred = predict(classifier, data.frame(Emot="happy",Pact="Walking",Mact="nothing",Session="morning"))

Error in predict.randomForest(classifier, data.frame(Emot = "happy", : Type of predictors in new data do not match that of the training data.

我甚至尝试在testinput.csv中保留单个条目,仍然会抛出相同的错误!怎么解决?这段代码是我另一段代码的后端,我希望只有一个条目可以作为测试来预测结果。所有这些都是培训和测试集中的“因素”。帮助赞赏。

PS:以前针对相同错误的解决方案,对我没有帮助。

str(test_set)

'data.frame':   1 obs. of  5 variables:
 $ Emot   : Factor w/ 1 level "fear": 1
 $ Pact   : Factor w/ 1 level "Bicycling": 1
 $ Mact   : Factor w/ 1 level "browsing": 1
 $ Session: Factor w/ 1 level "morning": 1
 $ Song   : Factor w/ 1 level "Dusk Till Dawn.mp3": 1

STR(training_set)

'data.frame':   1052 obs. of  5 variables:
 $ Emot   : Factor w/ 8 levels "anger","contempt",..: 4 7 6 6 4 3 4 6 4 6 ...
 $ Pact   : Factor w/ 5 levels "Bicycling","Driving",..: 1 2 2 2 4 3 1 1 3 4 ...
 $ Mact   : Factor w/ 6 levels "browsing","chatting",..: 1 6 1 4 5 1 5 6 6 6 ...
 $ Session: Factor w/ 4 levels "afternoon","evening",..: 3 4 3 2 1 3 1 1 2 1 ...
 $ Song   : Factor w/ 101 levels "Aaj Ibaadat.mp3",..: 29 83 47 72 29 75 77 8 30 53 ...

1 个答案:

答案 0 :(得分:1)

哦,这成功,奇怪的解决方案。均衡的培训和测试集。以下代码将第一行训练集绑定到测试集,然后将其删除。

String?

完成!它适用于单输入和单输入.csv文件,不会在模型中引入错误。