KNeighborsClassifier的距离变化

时间:2018-06-27 22:37:32

标签: scikit-learn classification nearest-neighbor metric

我想更改sklearn的KNeighborsClassifier使用的距离。距离是指要素空间中可以看到谁是点的邻居的人。更具体地说,我要使用以下距离:

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

谢谢。

1 个答案:

答案 0 :(得分:0)

只需定义您的自定义指标,即可:

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中的距离和自定义距离度量here

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

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

Here is an example也是自定义指标。