J'essaie d'implémenter un algorithme de forêt aléatoire simple dans R juste pour savoir comment fonctionne R et Random Forest, et tester la précision dans un ensemble de test.R - Forêt aléatoire - Erreur lors de l'application de la matrice de confusion sur les données de test
Mes données d'échantillon (cinq lignes de 561 lignes au total) est:
bulbasaur[1:5,]
Appt_date count no_of_reps PerReCount
1 2016-01-01 2 1 2.000000
2 2016-01-04 174 58 3.000000
3 2016-01-05 206 59 3.491525
4 2016-01-06 203 61 3.327869
5 2016-01-07 236 64 3.687500
Le code que je l'ai écrit est:
install.packages("caret")
library(caret)
leaf <- bulbasaur
ctrl = trainControl(method="repeatedcv", number=100, repeats=50, selectionFunction = "oneSE")
in_train = createDataPartition(leaf$PerReCount, p=.75, list=FALSE)
#random forest
trf = train(PerReCount ~ ., data=leaf, method="rf", metric="RMSE",trControl=ctrl, subset = in_train)
#boosting
tgbm = train(PerReCount ~ ., data=leaf, method="gbm", metric="RMSE",
trControl=ctrl, subset = in_train, verbose=FALSE)
resampls = resamples(list(RF = trf, GBM = tgbm))
difValues = diff(resampls)
summary(difValues)
######Using it on test matrix
test = leaf[-in_train,]
test$pred.leaf.rf = predict(trf, test, "raw")
confusionMatrix(test$pred.leaf.rf, test$PerReCount)
Cependant, je reçois l'erreur suivante:
Error in confusionMatrix.default(test$pred.leaf.rf, test$PerReCount) :
the data cannot have more levels than the reference
J'ai essayé quelques changements, comme prendre leaf$PerReCount <- as.factors(leaf$PerReCount)
, et en ajoutant type = "class"
, mais l'exactitude qui est venue était abyssale, et je ne veux pas la changer de la régression à la classification. Comment puis-je le résoudre sans convertir en facteurs, ou de toute autre manière telle que le problème peut être résolu, ou obtenir un compte de précision sans utiliser de matrice de confusion peut-être. Merci
Une matrice de confusion est destinée aux ** classificateurs ** et n'a aucun sens si votre variable cible est numérique. Maintenant, la variable 'PerReCount' est évidemment une variable numérique continue. Votre problème n'est pas avec le code, mais avec la compréhension de vos données. –