Нужна функция, которая возвращает оценку, равную среднему значению k ближайших точек к числу p?

Определите функцию, которая принимает одномерный массив NumPy, параметр k и число p. Функция возвращает оценку, равную среднему значению k ближайших точек к числу p?

def k_neighbor (input_data, k, p): "" "Возвращает оценку k-соседа для p с использованием данных input_data.

Keyword arguments:
input_data -- NumPy array of all the data
k -- Number of k
p -- input values

Вот вызов функции

data = np.array ([1,3,4,5,7,8,11,12,13,15,19,24,25,29,40]) print (k_neighbor (input_data = data, k = 3, р = 5))


person dhairya    schedule 27.01.2020    source источник


Ответы (1)


Копирование из Найдите ближайшее значение в массиве numpy и небольшая корректировка дает то, что вы хотите :

import numpy as np
def find_nearest(array, value,n_neighbors=1):
    distances=np.abs(array - value)
    print(distances)

    nearest_neighbors=[]
    for i in range(0,n_neighbors):
        idx=distances.argmin()
        nearest_neighbors.append(array[idx])
        distances[idx]=np.amax(distances)

    return nearest_neighbors

data=np.array([1,3,4,5,7,8,11,12,13,15,19,24,25,29,40])
value=24
print(find_nearest(data, value,n_neighbors=3))

возвращается

[24, 25, 19]

person Joris    schedule 27.01.2020
comment
в приведенном выше коде, если я беру значение = 25, тогда он дает 25 как ближайший сосед import numpy как np def find_nearest (array, value, n_neighbors = 3): distance = np.abs (array - value) near_neighbors = [] for i in range (0, n_neighbors): idx = distance.argmin () near_neighbors.append (array [idx]) distance [idx] = distance.argmax () return near_neighbors data = np.array ([1,3,4,5, 7,8,11,12,13,15,19,24,25,29,40]) значение = 25 print (find_nearest (data, value, n_neighbors = 3)) - person dhairya; 27.01.2020
comment
import numpy as np def find_nearest (array, value, n_neighbors = 3): Distance = np.abs (array - value) near_neighbors = [] для i в диапазоне (0, n_neighbors): idx = distance.argmin () near_neighbors.append (array [idx]) distance [idx] = distance.argmax () return near_neighbors data = np.array ([1,3,4,5,7,8,11,12,13,15,19,24,25 , 29,40]) value = 25 print (find_nearest (data, value, n_neighbors = 3)) значение повторяется в этом случае - person dhairya; 27.01.2020
comment
Я изменил его, поэтому он также возвращает три ближайших числа, когда значение поиска уже есть. Но я уверен, что ты мог бы сделать это и сам. - person Joris; 28.01.2020