2016-08-28 4 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,:] или y[index_train] - 100, максимальное значение o f index_train, который будет действительным, равно 99. Аналогично для index_test.

Что-то в

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

вызывает один из этих показателей, чтобы быть слишком большим для одного из этих массивов в то время вы пронумеровать (КФ).

+0

Хорошо, спасибо за разъяснение и предложение – dorayaki

Смежные вопросы