Я пытаюсь реализовать kfold проверки в питоне для подготовки CIFAR-10 установлен так, для этого я пытаюсь замаскировать обучающий набор с помощью булевого листаМаскировка 2d массивов с помощью булева массива
X_Train_folds является массивом форма 5X1000X3072
selection = [True, True, True, True, True]
for k in k_choices:
for i in xrange(0,num_folds):
selection[i] = False
classifier = KNearestNeighbor()
classifier.train(X_train_folds[selection,:].reshape(1,X_train_folds.shape[0]*X_train_folds.shape[1])),
Y_train_folds[selection,:].reshape(1,Y_train_folds.shape[0]*Y_train_folds.shape[1]))
dists = classifier.compute_distances_no_loops(X_train_folds[i])
y_pred = classifier.predict_labels(dists, k)
num_correct = np.sum(y_pred == Y_train_folds[i])
accuracy = float(num_correct)/(y_train.shape[0]/num_folds)
k_to_accuracies[k] = accuracy
TypeError: list indices must be integers, not tuple
EDIT 1: проблема может быть понята как я пытаюсь получить как 4 строк, за исключением одного г-я в петле, как если массив [1,2,3,4,5] первый я хочу список [2,3,4,5], затем [1,3,4,5] и т. д.
Проблема заключается в Python не имеет истинную структуру 2D массива - можно подделать с помощью словаря вместо списка, или вы могли бы использовать что-то вроде NumPy, который имеет 2D массивов, которые используют этот синтаксис. – jackarms
Я не понял ваше второе решение, которое вы могли бы разработать? а также вы говорите о создании X_Train_folds в качестве словаря? Я думаю, что словарь - это действительно хорошее предложение, я обязательно его попробую, но мне хотелось бы, если бы вы могли подробно рассказать о втором, как кажется более нормальным. –
Возможно, вы могли бы объяснить проблему, которую пытаетесь решить? Кажется, вы хотите получить 1 строку, затем 2 строки и т. Д., Используя логический массив, но я действительно не уверен. – jackarms