如何为sklearn knn制作用户定义的可调用权重函数?

问题描述 投票:0回答:1

我正在尝试为 Sklearn KNN 分类器制作自定义权重,类似于 here。 在文档中只是简单地提到,您可以将自定义权重设置为用户定义的函数,它接受距离数组,并返回包含权重的相同形状的数组。here

如何为平方距离或线性权重创建该函数? 我读了无数页的SO,但没有任何运气。 有演练或正确的例子吗?

python scikit-learn knn callable weighted
1个回答
0
投票

我意识到这来得太晚了,但以防万一其他人遇到这种困难,您可以尝试使用传递给您想要实例化的 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)
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.