2017-07-15 5 views
0

Ich verwende zufällige Gesamtstruktur für die Vorhersage und in der predict(fit, test_feature) Zeile, bekomme ich den folgenden Fehler. Kann mir jemand helfen, das zu überwinden? Ich machte die gleichen Schritte mit einem anderen Datensatz und hatte keinen Fehler. aber ich bekomme hier Fehler.Index out-of-Bound-Fehler in Vorhersagefunktion von randomforest

Error: Error in x[, vname, drop = FALSE] : subscript out of bounds 

training_index <- createDataPartition(shufflled[,487], p = 0.8, times = 1) 
training_index <- unlist(training_index) 

train_set <- shufflled[training_index,] 
test_set <- shufflled[-training_index,] 

accuracies<- c() 
k=10 
n= floor(nrow(train_set)/k) 

for(i in 1:k){ 
    sub1<- ((i-1)*n+1) 
    sub2<- (i*n) 
    subset<- sub1:sub2 
    train<- train_set[-subset, ] 
    test<- train_set[subset, ] 
    test_feature<- test[ ,-487] 

    True_Label<- as.factor(test[ ,487]) 
    fit<- randomForest(x= train[ ,-487], y= as.factor(train[ ,487])) 

    prediction<- predict(fit, test_feature) #The error line 
    correctlabel<- prediction == True_Label 
    t<- table(prediction, True_Label) 
} 

Antwort

0

Ihre Frage ist nicht ganz klar, trotzdem kann ich versuchen, Ihnen zu helfen. Überprüfen Sie zuerst Ihre Daten, um die Verteilung in den Ebenen Ihrer verschiedenen Prädiktoren und Ergebnisse zu sehen. Sie können feststellen, dass einige Ihrer Prädiktoren oder Endpunkte sehr stark verzerrt sind, oder einige Ergebnisse oder Prädiktoren sind sehr selten. Ich habe diesen Fehler bekommen, als ich versuchte, ein sehr seltenes Ergebnis mit einer stark abgestimmten zufälligen Gesamtstruktur vorherzusagen, und so waren einige der Vorhersagewerte nicht wirklich in den Trainingsdaten. Somit erscheint in den Testdaten eine Faktorstufe, die nach Ansicht der Trainingsdaten außerhalb der Grenzen liegt.

Alternativ können Sie die Namen Ihrer Variablen überprüfen. Bevor Sie vorhergesagt(), um sicherzustellen, dass die Variablennamen übereinstimmen. Ohne Ihre Datendateien ist es schwer zu sagen, warum Ihr erstes Beispiel funktioniert hat. Zum Beispiel können Sie versuchen:

names(test) <- names(train) 
+0

Ich habe bereits meinen Train & Test Datensatz getestet. Auch wenn ich sowohl für Test- als auch für Testdaten ein eindeutiges Label verwende, bekomme ich dieselben Labels. Ich habe auch den Namen der Variablen überprüft, aber immer noch den gleichen Fehler –

0

ich vor ähnliches Problem wenigen Wochen hatte.

Um das Problem zu gehen, können Sie dies tun:

df$label <- factor(df$label) 

Statt as.factor nur generische Funktion Faktor versuchen. Versuchen Sie auch zuerst, Ihre Label-Variable zu benennen.

Verwandte Themen