KNeighbors分类器改变距离



我想从sklearn更改KNeighborsClassifier使用的距离。我所说的距离是指特征空间中查看谁是点的邻居的那个。更具体地说,我想使用以下距离:

d(X1,X2( = 0.1 * |X1[0] - X2[0]|+ 0.9*|X1[1] - X2[1]|

谢谢。

只需像这样定义您的自定义指标:

def mydist(X1, X2):
return 0.1 * abs(X1[0] - X2[0]) + 0.9*abs(X1[1] - X2[1])

然后使用metric参数初始化您的 KNeighboursClassifier,如下所示

clf = KNeighborsClassifier(n_neighbors=3,metric=mydist,)

您可以在此处阅读有关 sklearn 和自定义距离测量中可用距离的更多信息

只需确保根据官方文档,您的自定义指标应遵循以下属性

  1. 非负性: d(x, y(>= 0
  2. 恒等式:d(x, y( = 0 当且仅当 x == y
  3. 对称性: d(x, y(
  4. = d(y, x(
  5. 三角形不等式: d(x, y( + d(y, z(>= d(x, z(

下面是自定义指标的示例。

最新更新