带余弦和加权的pairwise_distances

数据挖掘 Python scikit-学习 余弦距离
2022-03-02 04:04:33

有没有办法让体重进入

pairwise_distances(X, metric='cosine')

可能使用**kwrds?

from sklearn.metrics import pairwise_distances

在 scipy 余弦距离中,可以添加权重数组,但这并没有给出成对矩阵。

a = np.array([9,8,7,5,2,9])
b = np.array([9,8,7,5,2,2])
w = np.array([1,1,1,1,1,1])

distance.cosine(a,b,w)

权重在哪里w

1个回答

pairwise_distances您可以使用该pdist方法来计算距离,而不是使用。这将使用distance.cosine支持值的权重。

import numpy as np
from scipy.spatial.distance import pdist, squareform

X = np.array([[5, 4, 3], [4, 2, 1], [5, 6, 2]])
w = [1, 2, 3]

distances = pdist(X, metric='cosine', w=w)

# change the result to a square matrix
distances = squareform(distances)

结果:

array([[0.        , 0.05508882, 0.04898252],
       [0.05508882, 0.        , 0.07833123],
       [0.04898252, 0.07833123, 0.        ]])