我有一个包含 300 万条记录和 15 列的数据集,我用它来进行客户细分。 我使用过 KMeans 和 MiniBatchKMeans,但它甚至在 45 小时后仍在运行(没有并行运行它们)。代码如下:
kmeans_set = {"init":"random", "max_iter":50, "random_state":42}
inertias = []
silhouette_coefficients = []
for k in range(4,10):
kmeans = KMeans(n_clusters=k, **kmeans_set) # open dictionary
kmeans.fit(df)
inertias.append(kmeans.inertia_)
score=silhouette_score(df, kmeans.labels_)
silhouette_coefficients.append(score)
该系统是 i5-10400,运行频率为 4GHz,配备 16GB RAM。代码运行时,12GB RAM 和大约 30%-40% 的 CPU 利用率。 我减少了迭代次数以使其运行得更快,但仍然没有任何改进。 你能给出一个让它运行得更快的解决方案吗?
我减少了迭代次数以使其运行得更快,但仍然没有任何改进。我已经使用 MiniBatchKMeans 运行了相同的代码,但它仍然没有显示输出。 我应该使用 PCA 降低维度还是 N-K 均值有效?
要提高 KMeans 和 MiniBatchKMeans 聚类的性能,您可以考虑以下策略:
kmeans_set = {"init":"random", "max_iter":50, "random_state":42}
替换为 kmeans_set = {"init":"k-means++", "max_iter":50, "random_state":42}
kmeans = MiniBatchKMeans(n_clusters=k, batch_size=10000, **kmeans_set)