Python 需要一个函数来返回一个估计值,该值等于距离数字p最近的k个点的平均值吗?
定义一个函数,该函数采用一维NumPy数组、参数k和数字p。该函数返回一个估计值,该值等于距离数字p最近的k点的平均值 def k_邻居(输入_数据,k,p): “”“使用数据输入返回p的k近邻估计值。\u dataPython 需要一个函数来返回一个估计值,该值等于距离数字p最近的k个点的平均值吗?,python,numpy,knn,Python,Numpy,Knn,定义一个函数,该函数采用一维NumPy数组、参数k和数字p。该函数返回一个估计值,该值等于距离数字p最近的k点的平均值 def k_邻居(输入_数据,k,p): “”“使用数据输入返回p的k近邻估计值。\u data Keyword arguments: input_data -- NumPy array of all the data k -- Number of k p -- input values 下面是函数调用 数据=np.数组([1,3,4,5,7,8,11,12,13,15,19
Keyword arguments:
input_data -- NumPy array of all the data
k -- Number of k
p -- input values
下面是函数调用
数据=np.数组([1,3,4,5,7,8,11,12,13,15,19,24,25,29,40])
打印(k_neighbor(input_data=data,k=3,p=5))从位复制并调整位可以满足您的需要:
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]
你看过这个:?@joris:看过了,但是我的是一维数组在上面的代码中,如果我取value=25,那么它会给出25作为最近邻导入numpy作为np def find_nearest(数组,value,n_nearches=3):distance=np.abs(数组-value)nearcher_nearches=[]对于范围内的i(0,n_nearches):idx=distance.argmin()最近邻。追加(数组[idx])距离[idx]=距离。argmax()返回最近邻数据=np。数组([1,3,4,5,7,8,11,12,13,15,19,24,25,29,40])值=25打印(查找最近邻(数据,值,n_邻居=3))导入numpy作为np def查找最近邻(数组,值,n_邻居=3):距离=np.abs(数组-值)最近邻=[]对于范围内的i(0,n邻):idx=距离。argmin()最近邻。append(数组[idx])距离[idx]=距离。argmax()返回最近邻数据=np。数组([1,3,4,5,7,8,11,12,13,15,19,24,25,29,40])值=25打印(查找最近邻(数据,值,n邻=3))在这种情况下,值是重复的。我已经更改了它,所以当搜索值已经存在时,它也会返回三个最接近的数字。但是我相信你自己也可以这样做。