Python 使用单个集群的外部坐标可视化集群

Python 使用单个集群的外部坐标可视化集群,python,matplotlib,scikit-learn,k-means,graph-visualization,Python,Matplotlib,Scikit Learn,K Means,Graph Visualization,我想可视化我的集群 通过使用此代码: 导入matplotlib.pyplot作为plt 将matplotlib.patches作为MPatch导入 X=np.数组([[28,7],[36,5],[32,2],[56,8],[47,5],[50100],[100100],[26,59],[19,71], [75, 9], [34, 4], [56, 9], [28, 1], [33, 6]]) col=[“蓝色”、“绿色”、“c”、“m”、“y”、“k”、“紫色”、“靛蓝”] ncluster=2

我想可视化我的集群

通过使用此代码:

导入matplotlib.pyplot作为plt
将matplotlib.patches作为MPatch导入
X=np.数组([[28,7],[36,5],[32,2],[56,8],[47,5],[50100],[100100],[26,59],[19,71],
[75, 9], [34, 4], [56, 9], [28, 1], [33, 6]])
col=[“蓝色”、“绿色”、“c”、“m”、“y”、“k”、“紫色”、“靛蓝”]
ncluster=2
kmeans=kmeans(n_集群=ncluster,最大iter=500)。拟合(X)
y=kmeans.labels_
质心=kmeans.cluster\u中心_
簇_质心=dict()
簇半径=dict()
对于范围内的群集(ncluster):
群集\u质心[群集]=列表(
zip(质心[:,0],质心[:,1])[cluster]
簇半径[cluster]=max([np.linalg.norm(np.subtract(
i、 zip中i的簇(X[y==簇,0],X[y==簇,1]))
图,ax=plt.子批次(1,figsize=(7,5))
def drawclusters():
对于范围内的i(非群集):
plt.散射(X[y==i,0],X[y==i,1],s=100,
c=col[i],label=f'Cluster{i+1}')
艺术=mpatches.圆圈(
簇\质心[i]、簇\半径[i]、边颜色=柱[i]、填充=假)
ax.添加补丁(艺术)
plt.散射(质心[:,0],质心[:,1],s=200,
c='红色',标签='质心',标记='x')
抽签()
plt.legend()
plt.紧_布局()
plt.show()
我得到一个圆圈:

但是我想使用类似于此的点进行可视化忽略数据部分我只需要可视化部分(我需要形状):


我需要python代码。R中有一个函数fviz_cluster

您可以使用
scipy.spatial.ConvexHull()
创建每个簇的凸包。请注意,
X[y==i]
需要转换为新数组,因为
ConvexHull()
将索引返回到短数组中。返回的点形成一个多边形。需要在打印结束时复制第一个点,以包括闭合多边形的线段

导入matplotlib.pyplot作为plt
将numpy作为np导入
从sklearn.cluster导入KMeans
从scipy.spatial导入convxhull
def牵引群集(ax):
对于范围内的i(非群集):
点=X[y==i]
散乱(点[:,0],点[:,1],s=100,c=col[i],label=f'Cluster{i+1}')
外壳=凸形外壳(点)
vert=np.append(hull.vertices,hull.vertices[0])#通过在末端附加第一个点来闭合多边形
ax.绘图(点[vert,0],点[vert,1],'--',c=col[i])
最大填充(点[vert,0],点[vert,1],c=col[i],alpha=0.2)
最大散射(质心[:,0],质心[:,1],s=200,c='红色',标签='质心',标记='x')
X=np.数组([[28,7],[36,5],[32,2],[56,8],[47,5],[50,100],[100,100],[26,59],[19,71],
[75, 9], [34, 4], [56, 9], [28, 1], [33, 6]])
col=['蓝色','绿色']
ncluster=2
kmeans=kmeans(n_集群=ncluster,最大iter=500)。拟合(X)
y=kmeans.labels_
质心=kmeans.cluster\u中心_
图,ax=plt.子批次(1,figsize=(7,5))
抽绳器(ax)
ax.图例()
plt.紧_布局()
plt.show()