如何使用 skleans 的 KMeans 查看 n_init 每次迭代的聚类质心
How to view cluster centroids for each iteration of n_init using skleans' KMeans
我目前正在尝试查看由 n_init 的每次迭代确定的 KMeans 的每次迭代创建的质心(簇中心)。截至目前,我能够查看最终结果,但我希望在每次迭代中看到这些结果,因此我能够在每次迭代中使用 init='random' 和预设聚类中心时报告 KMeans 的差异。以下是我目前拥有的简要示例
\
#Creating model for Kmeans
Model=[]
Model=KMeans(n_clusters=5,max_iter=10,n_init=10)
#Data trials below represents my data for model training
Model.fit(Data_Trials)
#Get Created Clusters
labels=Model.predict(Data_Trials)
inertia=Model.inertia_
### Gets created Cluster centroids for Final iteration of n_init
zTrial=pd.DataFrame(Model.cluster_centers_)
如果有人知道如何在每次迭代中得到这个,我将不胜感激。
你可以玩 iterations.Take 这个 12 点的例子
X = np.array([[1, 2], [1, 4], [1, 0],[1, 3], [1, 8], [1, 9],[2, 2], [2, 4], [2, 0],[4, 2], [4, 4], [4, 0]])
一次迭代
kmeans = KMeans(n_clusters=3, random_state=0,max_iter=1).fit(X)
kmeans.predict([[0, 0], [2, 2],[6, 4]])
结果我们有
kmeans.cluster_centers_
array([[ 2.75 , 0.5 ],
[ 1.83333333, 3.16666667],
[ 1. , 8.5 ]])
如果增加迭代次数
kmeans = KMeans(n_clusters=3, random_state=0,max_iter=10).fit(X)
kmeans.cluster_centers_
array([[ 1. , 8.5 ],
[ 2.75 , 0.5 ],
[ 1.83333333, 3.16666667]])
我目前正在尝试查看由 n_init 的每次迭代确定的 KMeans 的每次迭代创建的质心(簇中心)。截至目前,我能够查看最终结果,但我希望在每次迭代中看到这些结果,因此我能够在每次迭代中使用 init='random' 和预设聚类中心时报告 KMeans 的差异。以下是我目前拥有的简要示例 \
#Creating model for Kmeans
Model=[]
Model=KMeans(n_clusters=5,max_iter=10,n_init=10)
#Data trials below represents my data for model training
Model.fit(Data_Trials)
#Get Created Clusters
labels=Model.predict(Data_Trials)
inertia=Model.inertia_
### Gets created Cluster centroids for Final iteration of n_init
zTrial=pd.DataFrame(Model.cluster_centers_)
如果有人知道如何在每次迭代中得到这个,我将不胜感激。
你可以玩 iterations.Take 这个 12 点的例子
X = np.array([[1, 2], [1, 4], [1, 0],[1, 3], [1, 8], [1, 9],[2, 2], [2, 4], [2, 0],[4, 2], [4, 4], [4, 0]])
一次迭代
kmeans = KMeans(n_clusters=3, random_state=0,max_iter=1).fit(X)
kmeans.predict([[0, 0], [2, 2],[6, 4]])
结果我们有
kmeans.cluster_centers_
array([[ 2.75 , 0.5 ],
[ 1.83333333, 3.16666667],
[ 1. , 8.5 ]])
如果增加迭代次数
kmeans = KMeans(n_clusters=3, random_state=0,max_iter=10).fit(X)
kmeans.cluster_centers_
array([[ 1. , 8.5 ],
[ 2.75 , 0.5 ],
[ 1.83333333, 3.16666667]])