我面临的问题是快速找到给定范围内最近的邻居。
数据集示例:
id | string | float
0 | AA | 0.1
12 | BB | 0.5
2 | CC | 0.3
102| AA | 1.1
33 | AA | 2.8
17 | AA | 0.5
对于每一行,打印满足以下条件的行数:
- 字符串字段等于当前字段
- 浮点字段
对于 del = 1.5 的示例:
id | count
0 | 0
12 | 0
2 | 0
102| 2 (string is equal row with id=0,33,17 but only in row id=0,17 float value: 1.1-1.5<=0.1, 1.1-1.5<=0.5)
33 | 0 (string is equal row with id=0,102,17 but 2.8-1.5>=0.1/1.1/1.5)
17 | 1
为了解决这个问题,我使用了一个类BallTree
使用自定义指标,但由于反向树遍历(在大型数据集上),它可以工作很长时间。
有人可以建议其他解决方案,或者如何将自定义指标的速度提高到来自sklearn.neighbors.DistanceMetric
?
My code:
from sklearn.neighbors import BallTree
def distance(x, y):
if(x[0]==y[0] and x[1]>y[1]):
return (x[1] - y[1])
else:
return (x[1] + y[1])
tree2 = BallTree(X, leaf_size=X.shape[0], metric=distance)
mas=tree2.query_radius(X, r=del, count_only = True)
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)