繁体   English   中英

如何在sklearn中使用曼哈顿距离SpectralCluster

[英]How to use manhattan distance for SpectralCluster in sklearn

我想在Sklearn中使用曼哈顿距离进行SpectralClustering() 我试图将affinity参数设置为manhattan ,但得到以下错误。

ValueError:未知内核'manhattan'

我应该使用什么样的内核名称? 有人可以帮忙吗? 基本上,我想使用SpectralClustering来实现使用manhattan距离度量的kmeans

这里是设置SpectralClustering()的代码行:

clustering = SpectralClustering(n_clusters=10, affinity='manhattan', assign_labels="kmeans")
clustering.fit(X)

Spectral Clustering官方文档告诉您,您可以使用sklearn.metrics.pairwise_kernels支持的任何sklearn.metrics.pairwise_kernels 不幸的是,曼哈顿距离还没有配对内核。

如果类似的东西就足够了,你可以像这样使用linear距离:

clustering = SpectralClustering(n_clusters=10, affinity='linear', assign_labels="kmeans")

sklearn.metrics.pairwise_kernels中不支持曼哈顿距离,这是ValueError的原因。

From Documentation:

指标的有效值为::
['rbf','sigmoid','polynomial','poly','linear','cosine']

linearmanhattan距离度量不同,你可以从这里提到的例子中理解

>>> import numpy as np
>>> from sklearn.metrics import pairwise_distances
>>> from sklearn.metrics.pairwise import pairwise_kernels
>>> X = np.array([[2, 3], [3, 5], [5, 8]])
>>> Y = np.array([[1, 0], [2, 1]])
>>> pairwise_distances(X, Y, metric='manhattan')
array([[ 4.,  2.],
       [ 7.,  5.],
       [12., 10.]])
>>> pairwise_kernels(X, Y, metric='linear')
array([[ 2.,  7.],
       [ 3., 11.],
       [ 5., 18.]])

曼哈顿距离函数在sklearn.metrics.pairwise_distancesklearn.metrics.pairwise_distance

现在,使用光谱聚类的曼哈顿距离测量的简单方法是,

>>> from sklearn.cluster import SpectralClustering
>>> from sklearn.metrics import pairwise_distances
>>> import numpy as np
>>> X = np.array([[1, 1], [2, 1], [1, 0],
...               [4, 7], [3, 5], [3, 6]])

>>> X_precomputed = pairwise_distances(X, metric='manhattan')
>>> clustering = SpectralClustering(n_clusters=2, affinity='precomputed', assign_labels="discretize",random_state=0)
>>> clustering.fit(X_precomputed)
>>> clustering.labels_
>>> clustering 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM