Python 3.x 为什么我在KNeighborsclassifier中得到的分区索引必须是整数?

Python 3.x 为什么我在KNeighborsclassifier中得到的分区索引必须是整数?,python-3.x,machine-learning,scikit-learn,classification,nearest-neighbor,Python 3.x,Machine Learning,Scikit Learn,Classification,Nearest Neighbor,我试图使用sciklearn在我的数据上找到Kneighbors分类器的优点 下面是我的代码(X是一个矩阵,其中NUM_匹配行,NUM_特征列,Y是一个列向量,其中NUM_匹配行)。我一直在犯错误 TypeError:分区索引必须是整数 在下面代码的这一行 rad_prob = estimator.predict_proba(np.reshape(radiant_query,(1,-1)))[0][1] 我刚接触sciklearn,不知道问题出在哪里 from sklearn.neighbor

我试图使用sciklearn在我的数据上找到Kneighbors分类器的优点

下面是我的代码(X是一个矩阵,其中NUM_匹配行,NUM_特征列,Y是一个列向量,其中NUM_匹配行)。我一直在犯错误

TypeError:分区索引必须是整数

在下面代码的这一行

rad_prob = estimator.predict_proba(np.reshape(radiant_query,(1,-1)))[0][1]
我刚接触sciklearn,不知道问题出在哪里

from sklearn.neighbors import KNeighborsClassifier
from sklearn import cross_validation
import numpy as np

K=2
FOLDS_FINISHED=0
NUM_HEROES = 78
NUM_FEATURES = NUM_HEROES*2
def score(estimator, X, y):
    global FOLDS_FINISHED
    correct_predictions = 0

    for i, radiant_query in enumerate(X):
        dire_query = np.concatenate((radiant_query[NUM_HEROES:NUM_FEATURES], radiant_query[0:NUM_HEROES]))
        rad_prob = estimator.predict_proba(np.reshape(radiant_query,(1,-1)))[0][1]
        dire_prob = estimator.predict_proba(np.reshape(dire_query,(1,-1)))[0][0]
        overall_prob = (rad_prob + dire_prob) / 2
        prediction = 1 if (overall_prob > 0.5) else -1
        result = 1 if prediction == y[i] else 0
        correct_predictions += result
    FOLDS_FINISHED += 1
    accuracy = float(correct_predictions) / len(X)
    print ('Accuracy: %f' % accuracy)
    return accuracy

preprocessed = np.load('train_9000.npz')
X = preprocessed['X']
Y = preprocessed['Y']

NUM_MATCHES = 3000
X = X[0:NUM_MATCHES]
Y = Y[0:NUM_MATCHES]

k_fold = cross_validation.KFold(n=NUM_MATCHES, n_folds=K, shuffle=True)
d_tries = [3, 4, 5]

d_accuracy_pairs = []
for d_index, d in enumerate(d_tries):
    model = KNeighborsClassifier(n_neighbors=NUM_MATCHES/K,metric=my_distance,weights=poly_param(d))
    model_accuracies = cross_validation.cross_val_score(model, X, Y, scoring=score, cv=k_fold)
    model_accuracy = model_accuracies.mean()
    d_accuracy_pairs.append((d, model_accuracy))

预处理的数据看起来像什么?Ex是一个有9000行和NUM_HEROES(78)列的矩阵,Y是一个有9000行的列向量。