我已经生成了一个成对距离的数据集,如下所示:
id_1 id_2 dist_12
id_2 id_3 dist_23
我想对这些数据进行聚类以识别模式。我一直在研究 Spectral clustering 和 DBSCAN,但我无法得出结论,并且对于如何利用这些算法的现有实现一直模棱两可。到目前为止,我一直在研究 Python 和 Java 的实现。
谁能指点我一个关于如何利用这些聚类算法来处理手头情况的教程或演示?
我已经生成了一个成对距离的数据集,如下所示:
id_1 id_2 dist_12
id_2 id_3 dist_23
我想对这些数据进行聚类以识别模式。我一直在研究 Spectral clustering 和 DBSCAN,但我无法得出结论,并且对于如何利用这些算法的现有实现一直模棱两可。到目前为止,我一直在研究 Python 和 Java 的实现。
谁能指点我一个关于如何利用这些聚类算法来处理手头情况的教程或演示?
在光谱聚类和 DBSCAN 的 scikit-learn 实现中,您不需要预先计算距离,您应该输入所有id_1
...的样本坐标id_n
。以下是聚类算法的记录示例比较的简化:
import numpy as np
from sklearn import cluster
from sklearn.preprocessing import StandardScaler
## Prepare the data
X = np.random.rand(1500, 2)
# When reading from a file of the form: `id_n coord_x coord_y`
# you will need this call instead:
# X = np.loadtxt('coords.csv', usecols=(1, 2))
X = StandardScaler().fit_transform(X)
## Instantiate the algorithms
spectral = cluster.SpectralClustering(n_clusters=2,
eigen_solver='arpack',
affinity="nearest_neighbors")
dbscan = cluster.DBSCAN(eps=.2)
## Use the algorithms
spectral_labels = spectral.fit_predict(X)
dbscan_labels = dbscan.fit_predict(X)