gpt4 book ai didi

python - 使用加权距离度量的 Scikit-learn 最近邻搜索

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:11 24 4
gpt4 key购买 nike

尝试使用 minkowski 距离和传递权重,但 sklearn 指标不允许这样做。尝试了 scipy 中的 pdist 和 cdist,但它们会预先计算距离!

    import pandas as pd
from sklearn.neighbors import NearestNeighbors

X = pd.read_csv('.file.csv')

weights = [1] * X.shape[1] # filled with 1's for now

nbrs = NearestNeighbors(
algorithm = 'brute',
metric = minkowski(u, v, p=1, w=weights), n_jobs = -1)
.fit(X)

distances, indices = nbrs.kneighbors(X=X, n_neighbors=50, return_distance=True)

返回:

"NameError: name 'u' is not defined"

callable(minkowski) 返回 True!

我知道我没有传递 u 和 v,所以出现错误也就不足为奇了。对于使用 sklearn 支持的指标之外的其他指标,此文档有点差。例如,我如何使用 scipy 中的加权指标?

最佳答案

您现在可以使用 'wminkowski' 指标并使用 metric_params 将权重传递给指标。

import numpy as np
from sklearn.neighbors import NearestNeighbors

seed = np.random.seed(9)
X = np.random.rand(100, 5)
weights = np.random.choice(5, 5, replace=False)

nbrs = NearestNeighbors(algorithm='brute',
metric='wminkowski',
metric_params={'w': weights},
p=1,
n_jobs=-1)
nbrs.fit(X)

输出:

NearestNeighbors(algorithm='brute', leaf_size=30, metric='wminkowski',
metric_params={'w': array([2, 0, 3, 4, 1])}, n_jobs=-1,
n_neighbors=5, p=1, radius=1.0)

关于python - 使用加权距离度量的 Scikit-learn 最近邻搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48288047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com