【发布时间】:2014-02-01 12:44:04
【问题描述】:
有什么区别
predict(rf, newdata=testSet)
和
predict(rf$finalModel, newdata=testSet)
我用preProcess=c("center", "scale")训练模型
tc <- trainControl("repeatedcv", number=10, repeats=10, classProbs=TRUE, savePred=T)
rf <- train(y~., data=trainingSet, method="rf", trControl=tc, preProc=c("center", "scale"))
当我在居中和缩放的测试集上运行它时,我收到 0 个真阳性
testSetCS <- testSet
xTrans <- preProcess(testSetCS)
testSetCS<- predict(xTrans, testSet)
testSet$Prediction <- predict(rf, newdata=testSet)
testSetCS$Prediction <- predict(rf, newdata=testSetCS)
但是当我在未缩放的测试集上运行它时会收到一些真正的肯定。 我必须使用 rf$finalModel 在居中和缩放的 testSet 上接收一些真正的正数,在未缩放的测试集上接收 rf 对象......我错过了什么?
编辑
测试:
tc <- trainControl("repeatedcv", number=10, repeats=10, classProbs=TRUE, savePred=T)
RF <- train(Y~., data= trainingSet, method="rf", trControl=tc) #normal trainingData
RF.CS <- train(Y~., data= trainingSet, method="rf", trControl=tc, preProc=c("center", "scale")) #scaled and centered trainingData
在正常的测试集上:
RF predicts reasonable (Sensitivity= 0.33, Specificity=0.97)
RF$finalModel predicts bad (Sensitivity= 0.74, Specificity=0.36)
RF.CS predicts reasonable (Sensitivity= 0.31, Specificity=0.97)
RF.CS$finalModel same results like RF.CS (Sensitivity= 0.31, Specificity=0.97)
在居中和缩放的 testSetCS 上:
RF predicts very bad (Sensitivity= 0.00, Specificity=1.00)
RF$finalModel predicts reasonable (Sensitivity= 0.33, Specificity=0.98)
RF.CS predicts like RF (Sensitivity= 0.00, Specificity=1.00)
RF.CS$finalModel predicts like RF (Sensitivity= 0.00, Specificity=1.00)
所以看起来 $finalModel 需要相同格式的 trainingSet 和 testSet,而经过训练的对象只接受未居中和未缩放的数据,而不管选择的 preProcess 参数如何?
预测代码(其中testSet是普通数据,testSetCS是居中缩放的):
testSet$Prediction <- predict(RF, newdata=testSet)
testSet$PredictionFM <- predict(RF$finalModel, newdata=testSet)
testSet$PredictionCS <- predict(RF.CS, newdata=testSet)
testSet$PredictionCSFM <- predict(RF.CS$finalModel, newdata=testSet)
testSetCS$Prediction <- predict(RF, newdata=testSetCS)
testSetCS$PredictionFM <- predict(RF$finalModel, newdata=testSetCS)
testSetCS$PredictionCS <- predict(RF.CS, newdata=testSetCS)
testSetCS$PredictionCSFM <- predict(RF.CS$finalModel, newdata=testSetCS)
【问题讨论】:
-
能否请您发布您的最后一个火车对象的预测代码,即 RF、RF.CS?
标签: r classification prediction r-caret