【发布时间】:2021-02-12 16:07:53
【问题描述】:
我已经重新运行了 4 次 kmeans 并得到了
从其他答案,我明白了
每次 K-Means 初始化质心时,它都是随机生成的。
您能否解释一下为什么每次结果都完全相同?
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
%config InlineBackend.figure_format = 'svg' # Change the image format to svg for better quality
don = pd.read_csv('https://raw.githubusercontent.com/leanhdung1994/Deep-Learning/main/donclassif.txt.gz', sep=';')
fig, ax = plt.subplots(nrows=2, ncols=2, figsize= 2 * np.array(plt.rcParams['figure.figsize']))
for row in ax:
for col in row:
kmeans = KMeans(n_clusters = 4)
kmeans.fit(don)
y_kmeans = kmeans.predict(don)
col.scatter(don['V1'], don['V2'], c = y_kmeans, cmap = 'viridis')
centers = kmeans.cluster_centers_
col.scatter(centers[:, 0], centers[:, 1], c = 'red', s = 200, alpha = 0.5);
plt.show()
【问题讨论】:
-
随机初始化并不一定意味着随机结果。最简单的例子:k=1 的 k-means 总是在一步中找到平均值,而不管中心在哪里初始化。
标签: python-3.x scikit-learn k-means