我有一个使用python的最近邻算法的作业。我在纯python中有一个包含循环的给定代码。我必须使用numpy和without循环重写和配置该函数。
我有一个未标记的点u,需要分类,距离函数和训练集(X,Y)。我必须编写的函数应该返回与u具有最小距离的点的标签。
这是用纯python编写的函数,我必须重写:
def pynearest(u, X, Y, distance=pydistance):
xbest = None
ybest = None
dbest = float('inf')
for x, y in zip(X, Y):
d = distance(u, x)
if d < dbest:
ybest = y
xbest = x
dbest = d
return ybest
在Python中重写循环的过程称为矢量化。要解决此问题,通常必须使用索引来检索矩阵中的值。我建议你看看这个问题:Vectorizing for loops NumPy vectorizing a for loop in numpy/scipy? vectorizing a for loop in python