2017-10-05 3 views
0

Ich arbeite an einem unsymmetrischen Daten, mit Undersampling habe ich die beiden Klassen im gleichen Verhältnis gemacht.WARUM wird ein Fehler beim Abstimmen von n_estimators für RandomForestClassifier mit cross_val_score erzeugt?

X_undersample dataframe (984,28) 
y_undersample dataframe(984,1) 

Ich bin mit Random Klassifikator, um die besten Parameter n_estimators Ich bin mit Kreuzvalidierung zu finden. Hier ist der Code unten.

j_shout=range(1,300) 
j_acc=[] 
for j in j_shout: 
    lr = RandomForestClassifier(n_estimators = j, criterion = 'entropy', random_state = 0) 
    score=cross_val_score(lr,X_undersample,y_undersample,cv=10,scoring='accuracy') 
    print ('iteration',j,':cross_validation accuracy=',score) 
    j_acc.append(score.mean()) 

jetzt, wenn ich dies ausführen, erhalte ich den folgenden Fehler.

File "<ipython-input-43-954a9717dcea>", line 5, in <module> 
    score=cross_val_score(lr,X_undersample,y_undersample,cv=10,scoring='accuracy') 

    File "D:\installations\AC\lib\site-packages\sklearn\cross_validation.py", line 1562, in cross_val_score 
    cv = check_cv(cv, X, y, classifier=is_classifier(estimator)) 

    File "D:\installations\AC\lib\site-packages\sklearn\cross_validation.py", line 1823, in check_cv 
    cv = StratifiedKFold(y, cv) 

    File "D:\installations\AC\lib\site-packages\sklearn\cross_validation.py", line 569, in __init__ 
    label_test_folds = test_folds[y == label] 

IndexError: too many indices for array 

Ich versuche, die n_estimators auf kleinere Werte zu ändern, aber es immer noch die gleichen Fehler

Antwort

1

Nach Ihrer Zurückverfolgungs und Scikit-Learn Dokumentation von StratifiedKFold Iterator zeigt es scheint, dass StratifiedKFold bekommen y als abgeflachte Array. In Ihrem Fall übergeben Sie den Datenrahmen mit der Größe (984, 1). Ihr Teil des Codes sollte so sein:

score=cross_val_score(estimator=lr, 
         X=X_undersample.values, 
         y=y_undersample.values.ravel(), 
         cv=10, 
         scoring='accuracy') 
+0

wow danke so sehr, es hat funktioniert – danishxr

Verwandte Themen