[英]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的原因。
指标的有效值为::
['rbf','sigmoid','polynomial','poly','linear','cosine']
linear
和manhattan
距离度量不同,你可以从这里提到的例子中理解:
>>> 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_distance
下sklearn.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.