ValueError während der Verwendung Scikit lernen. Anzahl der Funktionen des Modells nicht übereinstimmen, dass der Eingang
Arbeite ich an einer Klassifizierung problem mit RandomForestClassifier. Im code bin ich Aufteilung des datasets in einen Zug-und test-Daten für die Vorhersagen getroffen werden.
Hier der code:
from sklearn.ensemble import RandomForestClassifier
from sklearn.cross_validation import train_test_split
import numpy as np
from numpy import genfromtxt, savetxt
a = (np.genfromtxt(open('filepath.csv','r'), delimiter=',', dtype='int')[1:])
a_train, a_test = train_test_split(a, test_size=0.33, random_state=0)
def main():
target = [x[0] for x in a_train]
train = [x[1:] for x in a_train]
rf = RandomForestClassifier(n_estimators=100)
rf.fit(train, target)
predicted_probs = [[index + 1, x[1]] for index, x in enumerate(rf.predict_proba(a_test))]
savetxt('filepath.csv', predicted_probs, delimiter=',', fmt='%d,%f',
header='Id,PredictedProbability', comments = '')
if __name__=="__main__":
main()
Auf exection allerdings bin ich mir immer die folgende Fehlermeldung:
ValueError: Anzahl der Merkmale des Modells muss mit der Eingabe.
Modell n_features 1434 und Eingang n_features ist 1435
Irgendwelche Vorschläge, wie ich Vorgehen sollte? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sieht aus wie Sie mit
a_test
direkt, ohne Strippen aus der Ausgabe-feature.Modell ist verwirrt, denn es erwartet nur 1434-Eingabe-Funktionen, aber Sie werden ihn zu füttern 1434-Funktionen zusammen mit der output-Funktion.
Können Sie dieses Problem beheben, indem Sie das gleiche tun mit
test
dass Sie nicht mit dem Zug.Dann verwenden
test
auf die folgende Zeile:scikit-learn
löst Ihr problem. 🙂