Python 3.x 为什么我在KNeighborsclassifier中得到的分区索引必须是整数?
我试图使用sciklearn在我的数据上找到Kneighbors分类器的优点 下面是我的代码(X是一个矩阵,其中NUM_匹配行,NUM_特征列,Y是一个列向量,其中NUM_匹配行)。我一直在犯错误 TypeError:分区索引必须是整数 在下面代码的这一行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
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行的列向量。