2016-08-28 13 views
0

MultinomialNBを実装しましたが、このメッセージが表示されます。それを解決するのを助けてください。ここに私のコード:IndexError:インデックスが範囲外にある

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

、その後、私はこのような結果を得る:

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

答えて

0

Pythonはゼロベースのインデックスを使用している場合はそうX.ix[index_train,:]の0次元またはy[index_train]が100の場合、最大値o f index_trainは有効です。index_testと同様です。

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

何かがこれらの指標の一つは、あなたが列挙時間(KF)で、これらの配列の1のためにあまりにも大きいことが原因となっています。

+0

よろしくお願いします – dorayaki

関連する問題