首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Python中的前四次迭代演示集群质心更新并将其可视化?

使用Python中的前四次迭代演示集群质心更新并将其可视化?
EN

Data Science用户
提问于 2020-12-24 22:05:18
回答 2查看 293关注 0票数 0

我成功地创建了一个包含6个集群的数据集,并使用下面的代码将其可视化,现在我想在KMeans算法中可视化地演示集群中心体的更新。这个演示应该包括生成2×2轴图的前四次迭代。

这是我的代码:

代码语言:javascript
复制
# import statements
from sklearn.datasets import make_blobs
import numpy as np
import matplotlib.pyplot as plt
# create blobs
data = make_blobs(n_samples=200, n_features=6, centers=6, cluster_std=1.6, random_state=50)
# create np array for data points
points = data[0]
# create scatter plot
plt.scatter(data[0][:,0], data[0][:,1], c=data[1], cmap='jet',marker="+",label="Original Data")
plt.xlim(-15,15)
plt.ylim(-15,15)
plt.show()

如何实现此算法?在使用R之前,有人问过它,但是,我想在python中这样做。你能帮我可视化前4次迭代吗?

产出应如下:

EN

回答 2

Data Science用户

发布于 2020-12-26 12:56:55

您可以使用plt.scatter()plt.subplots()来实现以下目标:

代码语言:javascript
复制
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
data = make_blobs(n_samples=200, n_features=8, 
                           centers=6, cluster_std=1.8,random_state=101)

fig, ax = plt.subplots(nrows=2, ncols=2,figsize=(10,10))

from sklearn.cluster import KMeans
c=d=0
for i in range(4):
    ax[c,d].title.set_text(f"{i+1} iteration points:")
    kmeans = KMeans(n_clusters=6,random_state=0,max_iter=i+1)
    kmeans.fit(data[0])
    centroids=kmeans.cluster_centers_
    ax[c,d].scatter(data[0][:,0],data[0][:,1],c=data[1],cmap='brg')
    ax[c,d].scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=200, c='black')
    d+=1
    if d==2:
        c+=1
        d=0

这将产生:

票数 1
EN

Data Science用户

发布于 2020-12-25 14:35:39

您可以自己编写一个KMeans算法,这样您就可以一步一步地执行每个更新,并且很容易地将点的绘制合并到您的代码中,但也可能使用KMeans执行来自scikit-learn。要阻止算法完全收敛,可以将max_iter限制为[1, 2, 3, 4],因为您只想绘制前四次迭代,并且可以分别从cluster_centers_labels_属性中提取集群质心和标签。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/87115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档