我找到了K-Medoids的this实现,我决定在我的代码中尝试它。
我的原始数据集是21x6矩阵。
要生成我正在使用的距离矩阵:
import scipy.spatial.distance as ssd
distanceMatrix = ssd.squareform(ssd.pdist(matr, 'cosine'))
然后我决定了一些集群:
clusters = int(np.sqrt(len(matr.data)/2))
最后:
clusters, medoids = self.cluster(distanceMatrix,clusters)
print(clusters)
print(medoids)
对于给定的输入,我得到这个输出:
[12 12 12 12 12 12 12 7 7 7 7 11 12 12 12 12 12 12 11 12 12]
[12 7 11]
虽然我期望输出类似于sklearn.cluster.KMeans,但我的矩阵中的每个点都有一个标签。 如果我想使用结果来分散聚类元素,我应该如何处理这种输出,如下图所示(我使用k-Means)?
答案 0 :(得分:1)
k-medoids使用数据点作为中心,因此Player.find({ filter: { include: ["countries", "colors"] } }).$promise.then(function(data) {
// some stuff
}
将为您提供输入数据集中的中心索引,print(medoids)
将为您提供数据点所属的组。
图中的星星将是数据集[12],数据集[11]和数据集[7]