首页 > 解决方案 > 是否有椭圆最近邻回归量?

问题描述

我目前正在使用 RadiusNeighborsRegressor。我想知道是否有椭圆邻居回归器而不是圆形。谢谢

https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.RadiusNeighborsRegressor.html

标签: pythonscikit-learn

解决方案


据我记得,scikit 没有可用的椭圆回归器。

不过,您可以使用自定义指标来让我们使用 KDTree 参考:

https://scikit-learn.org/stable/modules/neighbors.html#kdtree-and-balltree-classes

https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.DistanceMetric.html#sklearn.neighbors.DistanceMetric

from sklearn.neighbors import KDTree
import numpy as np
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])

# aspect of the axis a, b of the ellipse
aspect = b / a
dist = DistanceMetric.get_metric('pyfunc', func = lambda p0, p1: math.sqrt((p1[0] - p0[0]) * (p1[0] - p0[0]) + (p1[1] - p0[1]) * (p1[1] - p0[1]) * aspect))
kdt = KDTree(X, leaf_size=30, metric=dist)

# now kdt allows queries with ellipses with aspect := b / a
kdt.query([0.1337, -0.42], k=6)

推荐阅读