我正在尝试为 Sklearn KNN 分类器制作自定义权重,类似于 here。 在文档中只是简单地提到,您可以将自定义权重设置为用户定义的函数,它接受距离数组,并返回包含权重的相同形状的数组。here。
如何为平方距离或线性权重创建该函数? 我读了无数页的SO,但没有任何运气。 有演练或正确的例子吗?
我意识到这来得太晚了,但以防万一其他人遇到这种困难,您可以尝试使用传递给您想要实例化的 KNearest-Class 的简单 lambda 函数。
像这样:
def knn_weight(dist,sigma=5.0):
return math.e**(-dist**2 / (2*sigma**2))
然后您可以为该函数创建一个变量,例如:
gaussian_knn_weightf = lambda v:knn_weight(v)
使用
KNeighborsClassifier
类例如:
这将翻译为:
nbrs = KNeighborsClassifier(k=3,weights=gaussian_knn_weightf, algorithm='ball_tree', n_jobs=-1).fit(X_train, y_train)