如何使用seaborn专门绘制集群的质心?

Posted

技术标签:

【中文标题】如何使用seaborn专门绘制集群的质心?【英文标题】:How to plot the cluster's centroids using seaborn 【发布时间】:2020-10-19 21:31:26 【问题描述】:

基本上,我想这样绘制:

我已经设法使用

sns.scatterplot(X[:,0], X[:,1], hue=y, palette=['red', 'blue', 'purple', 'green'], alpha=0.5, s=7)

导致

如何像上一张图​​片一样精确定位质心?

【问题讨论】:

有两个单独的问题:1) 如何找到质心 - 使用一些平均值,2) 如何在 sns 中绘制 blob - 尝试添加具有单个数据点和胖点样式的单独系列。在这里检查,例如:***.com/questions/58791567/… 【参考方案1】:

您可以计算每个组的平均值,并在该位置绘制一个散点。

from matplotlib import pyplot as plt
import seaborn as sns
import numpy as np

N = 1000
X0 = np.random.normal(np.repeat(np.random.uniform(0, 20, 4), N), 1)
X1 = np.random.normal(np.repeat(np.random.uniform(0, 10, 4), N), 1)
X = np.vstack([X0, X1]).T
y = np.repeat(range(4), N)
colors = ['red', 'blue', 'purple', 'green']
ax = sns.scatterplot(X[:, 0], X[:, 1], hue=y, palette=colors, alpha=0.5, s=7)

means = np.vstack([X[y == i].mean(axis=0) for i in range(4)])
ax = sns.scatterplot(means[:, 0], means[:, 1], hue=range(4), palette=colors, s=20, ec='black', legend=False, ax=ax)
plt.show()

或者,Scikit Learns 的 KMeans 可用于计算 KMeans 标签和均值:

from sklearn.cluster import KMeans
from matplotlib import pyplot as plt
import numpy as np
import seaborn as sns

N = 500
X0 = np.random.normal(np.repeat(np.random.uniform(0, 20, 20), N), 3)
X1 = np.random.normal(np.repeat(np.random.uniform(0, 10, 20), N), 2)
X = np.vstack([X0, X1]).T
num_clusters = 4
kmeans = KMeans(n_clusters=num_clusters).fit(X)

colors = ['red', 'blue', 'purple', 'green']
ax = sns.scatterplot(X[:, 0], X[:, 1], hue=kmeans.labels_, palette=colors, alpha=0.5, s=7)
ax = sns.scatterplot(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1],
                     hue=range(num_clusters), palette=colors, s=20, ec='black', legend=False, ax=ax)
plt.show()

【讨论】:

以上是关于如何使用seaborn专门绘制集群的质心?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 skleans 的 KMeans 查看 n_init 每次迭代的集群质心

python 示例显示如何使用累积比绘制直方图。使用seaborn.FacetGrid()绘制多个直方图。

如何使用 Seaborn 并排绘制熊猫数据框的多组列

如何绘制非方形 Seaborn jointplot 或 JointGrid

如何在 DBSCAN sklearn 中获取质心?

在Seaborn中绘制堆积条形图以显示聚类[重复]