我编写了一个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 ...
答案 0 :(得分:1)
哦,这成功,奇怪的解决方案。均衡的培训和测试集。以下代码将第一行训练集绑定到测试集,然后将其删除。
String?
完成!它适用于单输入和单输入.csv文件,不会在模型中引入错误。