具有大量集群的 KMeans
KMeans with huge number of clusters
我有一个相对较大的图,大约有 6000 个顶点,我必须使用 KMeans 并查看 5467 个簇是什么。我必须使用不同的指标,这就是我将 distance_matrix 作为输入的原因。这样做的问题是,由于 n_clusters 太大,所以不会收敛。我被建议进行自定义调整以使其工作,但我不太确定这意味着什么。这就是为什么我在这里发布这个问题。欢迎任何帮助!谢谢!
这是我的代码:
from sklearn.cluster import KMeans
distance_matrix = floyd_warshall_numpy(G)
cluster = KMeans(n_clusters=5467)
cluster.fit(distance_matrix)
graph_labels = cluster.labels_
我不建议使用 Kmeans 使用如此多的集群。相反,请尝试使用具有欧氏距离的 Agglomerative clustering。这将允许您找到一个截止点,您可以在其中通过分组点获得预期的簇数。
如果在 5 处关闭会给你 4 个集群,而在 2 处关闭会给你更多。
伪代码-
from sklearn.cluster import AgglomerativeClustering
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])
clustering = AgglomerativeClustering().fit(X)
clustering.labels_
array([1, 1, 1, 0, 0, 0])
您也可以使用预先计算的矩阵进行凝聚聚类
查看我分享的文档link。
我有一个相对较大的图,大约有 6000 个顶点,我必须使用 KMeans 并查看 5467 个簇是什么。我必须使用不同的指标,这就是我将 distance_matrix 作为输入的原因。这样做的问题是,由于 n_clusters 太大,所以不会收敛。我被建议进行自定义调整以使其工作,但我不太确定这意味着什么。这就是为什么我在这里发布这个问题。欢迎任何帮助!谢谢! 这是我的代码:
from sklearn.cluster import KMeans
distance_matrix = floyd_warshall_numpy(G)
cluster = KMeans(n_clusters=5467)
cluster.fit(distance_matrix)
graph_labels = cluster.labels_
我不建议使用 Kmeans 使用如此多的集群。相反,请尝试使用具有欧氏距离的 Agglomerative clustering。这将允许您找到一个截止点,您可以在其中通过分组点获得预期的簇数。
如果在 5 处关闭会给你 4 个集群,而在 2 处关闭会给你更多。
伪代码-
from sklearn.cluster import AgglomerativeClustering
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])
clustering = AgglomerativeClustering().fit(X)
clustering.labels_
array([1, 1, 1, 0, 0, 0])
您也可以使用预先计算的矩阵进行凝聚聚类
查看我分享的文档link。