【发布时间】:2021-12-01 02:44:15
【问题描述】:
我已将 K-Means 应用于我有随机年龄和体重日期集的问题,在应用 K 均值后,我仍然无法理解为什么数据点没有收敛到质心。
age = [20,21,22,20,21,22,23,27,28,26,23,28,29,33,28,25,24,28,29,30,33,31,40,22,28,29,27,25,29,23]
weight = [80,50,70,50,82,49,60,66,76,45,66,86,77,56,76,81,72,92,72,91,72,75,60,61,99,54,56,45,40,76]
df_main = pd.DataFrame({'age':age_array,'weight':weight_array})
X_std = StandardScaler().fit_transform(df)
# Run local implementation of kmeans
km = KMeans(n_clusters=2, max_iter=100)
km.fit(X_std)
centroids = km.cluster_centers_
# Plot the clustered data
fig, ax = plt.subplots(figsize=(6, 6))
plt.scatter(X_std[km.labels_ == 0, 0], X_std[km.labels_ == 0, 1],
c='green', label='cluster 1')
plt.scatter(X_std[km.labels_ == 1, 0], X_std[km.labels_ == 1, 1],
c='blue', label='cluster 2')
plt.scatter(centroids[:, 0], centroids[:, 1], marker='*', s=50,
c='red', label='centroid')
plt.legend()
plt.xlim([-2, 2])
plt.ylim([-2, 2])
plt.xlabel('Age')
plt.ylabel('Height')
plt.title('Visualization of clustered data', fontweight='bold')
【问题讨论】:
-
“数据点未收敛到质心”是什么意思?数据点是静态的,它们不能收敛到任何东西
-
我无法区分哪个点进入集群 1,哪个点进入集群 2,因为两者都合并了。它们不应该像一条线,表明上面的点属于第一簇,下面的点属于第二簇吗?对不起,如果我错了,我是新手。 @ForceBru
-
一个集群是蓝色的,另一个是绿色的——在我看来它们并没有合并。如果您使用的是 scikit-learn,
km.labels_正是对点进行分类的方法,看起来您这样做是正确的
标签: python machine-learning k-means