2024-04-25 19:54:38 发布
网友
基本上,我想这样画:
我已经成功地使用
sns.scatterplot(X[:,0], X[:,1], hue=y, palette=['red', 'blue', 'purple', 'green'], alpha=0.5, s=7)
这导致了
如何像前一幅图像一样固定质心
你可以计算每组的平均值,然后在那个位置画一个散点
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标签和平均值:
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()
你可以计算每组的平均值,然后在那个位置画一个散点
或者,Scikit Learns的
KMeans
可用于计算KMeans标签和平均值:相关问题 更多 >
编程相关推荐