我使用随机森林进行文本分类。我的输入数据有17197行。
> nrow(sparse_4testing)[1] 17197
我使用的代码是
set.seed(123)tweetRand = randomForest(label ~ ., data = train_sparse, importance=TRUE, nTree=500)predicrRand_test=predict(tweetRand, data=sparse_4testing)q1=data.frame(ifelse(predicrRand_test>0.5,1,0))
问题是我在进行健全性检查时,q1中出现了额外的行
> nrow(q1)[1] 22373
我不明白这是怎么回事。我是机器学习的新手。请帮帮我。我已经多次运行模型,仍然遇到相同的问题。
> nrow(predicrRand_test)NULL> head(predicrRand_test) 1 3 6 7 9 10 1.858321e-01 -8.326673e-17 1.321640e-01 2.222222e-04 2.345304e-02 1.651133e-01 > head(q1) ifelse.predicrRand_test...0.05..1..0.1 13 06 17 09 010 1> length(predicrRand_test)[1] 22373
回答:
问题是由于predict
函数中使用了错误的参数名 – 应该使用newdata
,而不是data
(文档):
predicrRand_test=predict(tweetRand, newdata=sparse_4testing)
目前的代码忽略了data
参数,简单地在predicrRand_test
数据框中返回了训练集上的预测结果。