2017-03-21 4 views
0

Donc, j'essaie de former un modèle et de le tester en utilisant une régression aléatoire des forêts. Ma variable de réponse est une variable numérique et j'ai 23 autres variables qui sont un mélange de chiffres et de caractères. J'utilise le bloc de code suivant:Erreur lors de l'utilisation du paquet Caret pour la forêt aléatoire (régression)

library(e1071) 
library(dplyr) 
library(class) 
library(caret) 
library(kernlab) 

data=read.csv(choose.files()) 


set.seed(1) 
mydata=data 
n=dim(mydata)[1] 
p=dim(mydata)[2]-1 
x=mydata[,-3] 
y=mydata[,3] 

n_train=35 
n_test=9 

random_order=sample(n) 
test_index=random_order[1:n_test] 
train_index=random_order[-(1:n_test)] 
y_train=y[train_index] 
y_test=y[test_index] 
x_train=x[train_index,] 
x_test=x[test_index,] 

traindata=data.frame(x=x_train,y=(y_train)) 
testdata = data.frame(x=x_test,y=(y_test)) 

fitControl <- trainControl(## 10-fold CV 
    method = "repeatedcv",classProbs=TRUE, 
    number = 10, 
    ## repeated ten times 
    repeats = 10) 

set.seed(1) 
newrf=train(y ~ ., data = traindata , method = "rf", 
      trControl = fitControl) 

newrf 
bestmodel_rf= newrf$finalModel 
ypredcaret=predict(bestmodel_rf, newdata = testdata) 
table(predict=ypredcaret, truth=y_test) 
plot(newrf) 
bestmodel_rf 

Je reçois l'erreur suivante:

message d'avertissement: Dans train.default (x, y, poids = w, ...): cannnot calculer les probabilités de classe pour la régression message d'avertissement: dans train.default (x, y, poids = w, ...): calculer les probabilités de symbole ne peut pas classe pour la régression

Répondre

2

Vous avez spécifié dans classProbs=TtrainControl, qui ind Les probabilités de classe de glaçons devraient être calculées pour un modèle de classification (où la variable de réponse consiste en des étiquettes de classes discrètes). Cependant, ce paramètre d'argument est en conflit avec votre variable de réponse numérique (qui indique qu'un modèle de régression sera formé), ce qui entraîne le message d'erreur que les probabilités de classe ne peuvent pas être calculées pour la régression.

Depuis votre description et votre variable de réponse numérique indiquent qu'il s'agit d'un problème de régression, la suppression de classProbs=T (le paramètre par défaut est classProbs=F) de votre code devrait corriger l'erreur que vous obtenez.