Différence entre les prévoir(modèle) et de prévoir(modèle$finalModel) à l'aide de curseur pour la classification dans la R
Quoi la différence entre
predict(rf, newdata=testSet)
et
predict(rf$finalModel, newdata=testSet)
je train le modèle avec 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"))
et je reçois 0 vrais positifs lorsque je l'exécute sur un centré et mise à l'échelle testSet
testSetCS <- testSet
xTrans <- preProcess(testSetCS)
testSetCS<- predict(xTrans, testSet)
testSet$Prediction <- predict(rf, newdata=testSet)
testSetCS$Prediction <- predict(rf, newdata=testSetCS)
mais recevoir de vrais positifs lorsque je l'exécute sur un non mis à l'échelle testSet.
J'ai utiliser le rf$finalModel à recevoir un peu de vrai postives sur l'centré et mise à l'échelle testSet et de la rf de l'objet sur la non mis à l'échelle...ce qui me manque?
modifier
tests:
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
normal testSet:
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)
sur centré et mise à l'échelle 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)
il semble donc que si l' $finalModel besoins le même format de trainingSet et testSet alors que la formation de l'objet n'accepte que les uncentered et non mis à l'échelle des données, quel que soit le prétraitement de paramètre?
prédiction code (où testSet est normal de données et testSetCS est centré et mise à l'échelle ):
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)
OriginalL'auteur Frank | 2014-01-13
Vous devez vous connecter pour publier un commentaire.
Frank,
C'est vraiment similaire à votre autre question sur la Croix Validé.
Vous avez vraiment besoin de
1) montrer votre prédiction exacte de code pour chaque résultat
2) nous donne un exemple reproductible.
Avec la normale
testSet
,RF.CS
etRF.CS$finalModel
ne devrait pas vous donner les mêmes résultats, et nous devrions être en mesure de reproduire cela. De Plus, il y a des erreurs de syntaxe dans ton code donc il ne peut pas être exactement ce que vous avez réalisé.Enfin, je ne suis pas vraiment sûr pourquoi vous devez utiliser l'
finalModel
objet. Le point detrain
est de gérer les détails et de faire les choses de cette façon (ce qui est votre choix), contourne le jeu complet de code qui serait normalement appliqués.Voici un exemple reproductible:
Voici quelques résultats:
Max
Il le fait et c'est ce que
predict.train
utilise. Toutefois, il pourrait faire des choses pour les données de l'entre-deux de la question.Vous pourriez peut-être préciser les différences entre les
testing
ettesting2
en raison depreProcess
ainsi que l'invocation surpredict.train
n'utilisepreProcess
en interne tout enpredict(xx$finalModel)
ne le fait pas. Sinon, le post se lit un peu "voodoo-trucs-qui se passe", comme le rôle depreProcess
n'est jamais explicitée. (Clair +1.)OriginalL'auteur topepo