Я работаю над функцией, которая принимает набор тестовых данных, сравнивает различия каждой из 62 точек в тестовом наборе с каждой из 248 точек в тренировочном наборе, определяет, какая точка обучающих данных является ближайшей, и используетэтот индекс, чтобы вернуть массив прогнозируемого выхода.
Я заставляю функцию работать, как показано ниже, но я не мог заставить ее работать, используя вложенный цикл for. Кто-нибудь может объяснить мне, почему вложенный цикл работает по-другому? Я новичок в Python, и я некоторое время боролся с этим.
def distance(x,y):
return np.sum(np.abs(x-y))
def NN_L1(trainx, trainy, testx):
# inputs: trainx, trainy, testx <-- as defined above
# output: an np.array of the predicted values for testy
### BEGIN SOLUTION
predictions_l1 = np.ones(62)
for j in range(len(testx)):
prediction = trainy[np.argmin([distance(testx[j],trainx[i]) for i in range(len(trainx))])]
predictions_l1[j] = prediction
return predictions_l1
Вложенный цикл for, который я пробовал, выглядит следующим образом:
test_1 = np.ones(62)
for j in range(len(testx)):
for i in range(len(trainx)):
tester = trainy[np.argmin([distance(testx[j], trainx[i])])]
Я всегда получаю массиводинаковых значений при завершении функции