2016-08-28 8 views
0

Ich habe MultinomialNB implementiert, aber ich bekomme diese Nachricht. Bitte hilf mir, es zu lösen. Hier ist mein Code:IndexError: Index außerhalb der Grenzen

kf = KFold(len(X), n_folds=2, shuffle=True, random_state=9999) 
 
model_train_index = [] 
 
model_test_index = [] 
 
model = 0 
 

 
for k, (index_train, index_test) in enumerate(kf): 
 
    X_train, X_test, y_train, y_test = X.ix[index_train,:], X.ix[index_test,:],y[index_train], y[index_test] 
 
    clf = MultinomialNB(alpha=0.1).fit(X_train, y_train) 
 
    score = clf.score(X_test, y_test) 
 
    f1score = f1_score(y_test, clf.predict(X_test)) 
 
    precision = precision_score(y_test, clf.predict(X_test)) 
 
    recall = recall_score(y_test, clf.predict(X_test)) 
 
    print('Model %d has accuracy %f with | f1score: %f | precision: %f | recall : %f'%(k,score, f1score, precision, recall)) 
 
    model_train_index.append(index_train) 
 
    model_test_index.append(index_test) 
 
    model+=1

und dann habe ich führen erhalten wie folgt aus:

IndexError        Traceback (most recent call last) 
 
<ipython-input-3-df0b24edb687> in <module>() 
 
     5 
 
     6 for k, (index_train, index_test) in enumerate(kf): 
 
----> 7  X_train, X_test, y_train, y_test = X.ix[index_train,:], X.ix[index_test,:],y[index_train], y[index_test] 
 
     8  clf = MultinomialNB(alpha=0.1).fit(X_train, y_train) 
 
     9  score = clf.score(X_test, y_test) 
 

 
IndexError: index 100 is out of bounds for axis 0 with size 100

Antwort

0

Python verwendet Null basierte Indizierung so, wenn die nullte Dimension der X.ix[index_train,:] oder y[index_train] ist 100, der Maximalwert o f index_train das wäre gültig ist 99. Ebenso für index_test.

Etwas in

kf = KFold(len(X), n_folds=2, shuffle=True, random_state=9999) 

verursacht einen dieser Indizes für eines dieser Arrays aufzuzählen Sie zu der Zeit zu groß sein (kf).

+0

Okay, danke für Erklärung und Vorschlag – dorayaki

Verwandte Themen