【问题标题】:Need a function that returns an estimate equal to the mean of the closest k points to the number p?需要一个函数来返回一个估计值,该估计值等于与数字 p 最接近的 k 点的平均值?
【发布时间】:2020-05-12 23:13:52
【问题描述】:

定义一个函数,该函数接受一个一维 NumPy 数组、一个参数 k 和一个数字 p。该函数返回的估计值等于与数字 p 最接近的 k 点的平均值?

def k_neighbor(input_data, k, p): """使用数据 input_data 返回 p 的 k 邻域估计值。

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]) 打印(k_neighbor(输入数据=数据,k=3,p=5))

【问题讨论】:

标签: python numpy knn


【解决方案1】:

Find nearest value in numpy array 复制并稍作调整即可得到您想要的:

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]

【讨论】:

  • 在上面的代码中,如果我取 value=25 那么它给出 25 作为最近邻 import numpy as np def find_nearest(array, value,n_neighbors=3): distances=np.abs(array - value )最近的邻居=[]对于范围内的i(0,n_neighbors):idx=distances.argmin()最近的邻居.append(数组[idx])距离[idx]=距离.argmax()返回最近的邻居数据=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))
  • import numpy as np def find_nearest(array, value,n_neighbors=3): distances=np.abs(array - value) nearest_neighbors=[] for i in range(0,n_neighbors): idx= distances.argmin() nearest_neighbors.append(array[idx]) distances[idx]=distances.argmax() return nearest_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)) 在这种情况下重复值
  • 我已对其进行了更改,因此当搜索值已经存在时,它也会返回三个最接近的数字。但我相信你自己也可以做到。
猜你喜欢
  • 1970-01-01
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
  • 2016-01-12
  • 1970-01-01
  • 2019-04-02
  • 2021-01-25
  • 1970-01-01
相关资源
最近更新 更多