2016-07-29 27 views
0

Ich verwende Random für die Klassifizierung von Daten, und ich bin nicht in der Lage zu verstehen:Wie erhalten Sie korrekte Klasse, vorhergesagte Klasse und Vorhersagewahrscheinlichkeit in Random Forest in R?

1- Wie können wir die Informationen (vorzugsweise in einem Datenrahmen von 3 Spalten) erhalten, die uns die wirkliche Klassifizierung in testData erzählt (zB unten Beispiel Species Spalte), Vorhersage durch zufällige Gesamtstruktur, und die Wahrscheinlichkeit Score dieser Vorhersage. Zum Beispiel betrachtet nur der unten Datensatz und 1 Fall, in dem in testData die Species (verblendet Informationen für zufälligen Wald) war versicolor aber es war falsch von Klassifikator als virginica mit einem Wahrscheinlichkeitswert von 0,67 vorhergesagt. Ich möchte diese Art von Informationen, aber ich weiß nicht, wie kann ich dies erhalten

2- Wie können wir die Verwirrung Matrix für testData und trainingData bekommen, die uns auch die class.error gibt, wie in dem Fall, wenn wir die drucken Modell.

data(iris) 
set.seed(111) 
ind <- sample(2, nrow(iris), replace = TRUE, prob=c(0.8, 0.2)) 
trainData <- iris[ind==1,]  
testData <- iris[ind==2,] 
#grow forest 
iris.rf <- randomForest(Species ~ ., data=trainData) 
print(iris.rf) 

Call: 
randomForest(formula = Species ~ ., data = trainData) 
       Type of random forest: classification 
        Number of trees: 500 
No. of variables tried at each split: 2 

     OOB estimate of error rate: 3.33% 
Confusion matrix: 
      setosa versicolor virginica class.error 
setosa   45   0   0 0.00000000 
versicolor  0   39   1 0.02500000 
virginica  0   3  32 0.08571429 

**#predict using the training again...** 
iris.pred <- predict(iris.rf, trainData) 
table(observed = trainData$Species, predicted = iris.pred) 

      predicted 
observed  setosa versicolor virginica 
    setosa   45   0   0 
    versicolor  0   40   0 
    virginica  0   0  35 

**#Testing on testData** 
irisPred<-predict(iris.rf, newdata = testData) 
table(irisPred, testData$Species) 

irisPred  setosa versicolor virginica 
setosa   5   0   0 
versicolor  0   8   1 
virginica  0   2  14 

Antwort

1

Ich benutzte das Caret-Paket mit trainControl zufälligen Wald zu laufen:

library(caret) 
library(PerformanceAnalytics) 

model <- train(Species ~ .,trainData, 
      method='rf',TuneLength=3, 
      trControl=trainControl(
      method='cv',number=10, 
      classProbs = TRUE)) 
model$results 

irisPred_species<-predict(iris.rf, newdata = testData) 
irisPred_prob<-predict(iris.rf, newdata = testData, "prob") 

out.table <- data.frame(actual.species = testData$Species, pred.species = irisPred_species, irisPred_prob) 

Sie können die Fehlerrate erhalten von:

iris.rf$err.rate 

Und die Verwirrung Matrix:

iris.rf$confusion 
+0

Wo initialisierst du einen Wert für den 'iri am Objekt? – Newbie

+0

Entschuldigung, hätte geklärt werden müssen: Ich habe deinen obigen Code (iris.rf <- randomForest (Species ~., Data = trainData)) gefolgt. –