我想从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 和自定义距离测量中可用距离的更多信息
只需确保根据官方文档,您的自定义指标应遵循以下属性
- 非负性: d(x, y(>= 0
- 恒等式:d(x, y( = 0 当且仅当 x == y 对称性: d(x, y(
- = d(y, x(
- 三角形不等式: d(x, y( + d(y, z(>= d(x, z(
下面是自定义指标的示例。