【发布时间】:2019-12-18 23:21:39
【问题描述】:
我想看看是否可以在 KNeighborsClassifier 中修改指标的权重。 L2 欧几里得度量是这样工作的:
x = np.array([1,2,3])
y = np.array([6,5,4])
def d(x,y)=
sqrt((x[0]-y[0])^2 + (x[1]-y[1])^2 + (x[2]-y[2])^2)
但是,如果我想在 L2 指标中添加权重,比如 [1,2,3],该怎么办?例如,
w = np.array([1,2,3])
def d2(x,y)=
sqrt(w[0]*(x[0]-y[0])^2 + w[1]*(x[1]-y[1])^2 + w[2]*(x[2]-y[2])^2)
我可以对 metric 或 metric_params 做些什么
KNeighborsClassifier(n_neighbors=5, weights='uniform', p=2, metric='minkowski', metric_params=None, **kwargs)
谢谢
【问题讨论】:
-
您应该能够在调用
KNeighborsClassifier时使用metric传递您自己的指标 -
你可以在
metric参数中传递d2(你的距离函数)见参考答案here -KNeighborsClassifier(n_neighbors=5, weights='uniform', p=2, metric=d2)
标签: python scikit-learn