Я работаю над своим проектом KNN и мне дан набор данных, в котором содержится 60000 обучающих изображений и 60000 обучающих ярлыков, оба из которых преобразуются в ndarrays.Каждый элемент [training_image] представляет матрицу (изображение), и каждый элемент [training_labels] представлен в виде одного числа в диапазоне от 1 до 10, то есть [1.0 2.0 7.0 9.0 5.0 ... и т. Д.]
Я пишу функцию, которая разрабатывает прогнозируемый ответ большинства похожих соседей для тестового экземпляра.Предполагается, что класс является последним атрибутом для каждого соседа.Для этого мне нужно добавить к каждой из моих тренировочных данных ([training_images] значение [training_labels]. Однако, когда я пытался это сделать, я столкнулся с некоторыми проблемами: Вот мой код:
import numpy as np
import operator
import csv
import random
import math
from scipy.io import loadmat
import matplotlib.pyplot as plt
#Loading the data
M = loadmat('x_data.mat')
images_train,images_test,labels_train,labels_test= M['images_train'],M['images_test'],M['labels_train'],M['labels_test']
#just to make all random sequences on all computers the same.
np.random.seed(1)
#randomly permute data points
inds = np.random.permutation(images_train.shape[0])
images_train = images_train[inds]
labels_train = labels_train[inds]
inds = np.random.permutation(images_test.shape[0])
images_test = images_test[inds]
labels_test = labels_test[inds]
for i in images_train:
for j in labels_train:
i = np.append(i,labels_train[j])
Итак, дело в том, что я снова печатаю свой images_train, он выглядит так же, без каких-либо изменений. С другой стороны, если я делаю
b = labels_train[5]
b = np.append(b,(labels_train[5]))
print b
, это дает мне желаемый вывод
Так что яНе знаю, что не так с моими циклами или где проблема. Или, может быть, есть лучший способ достичь моей цели, создав словарь, где каждый из ярлыков обучения будет ключом к моим training_data? Не могли бы вы помочьнаправить меня к правильному решению.