Python 群集数据散点图,显示群集和中心
我发现每个数据的集群和我的集群数量更好 现在,我可以根据中心和簇来绘制散布图以查看数据吗 这是我的数据集 这是我使用的代码Python 群集数据散点图,显示群集和中心,python,scikit-learn,cluster-analysis,scatter-plot,Python,Scikit Learn,Cluster Analysis,Scatter Plot,我发现每个数据的集群和我的集群数量更好 现在,我可以根据中心和簇来绘制散布图以查看数据吗 这是我的数据集 这是我使用的代码 x = df_diabetes_normalizado['Glicose'] y = df_diabetes_normalizado['Massa Corporal'] Cluster = df_diabetes_normalizado['clusters'] centers = np.random.randn(1, 2) fig = plt.figure(figsi
x = df_diabetes_normalizado['Glicose']
y = df_diabetes_normalizado['Massa Corporal']
Cluster = df_diabetes_normalizado['clusters']
centers = np.random.randn(1, 2)
fig = plt.figure(figsize=(14,9))
ax = fig.add_subplot(111)
scatter = ax.scatter(x,y,c=Cluster,s=50)
for i,j in centers:
ax.scatter(i,j,s=50,c='red',marker='+')
ax.set_xlabel('x')
ax.set_ylabel('y')
fig.show()
然而,情节对我来说是如此的和谐
您能否给我一些指导,告诉我如何修复脚本以生成基于中心和群集分布的正确散射体?使用
iris
数据集的示例:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data[:,0:2]
y = iris.target
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
assignments = kmeans.labels_ # this is the CLUSTERS column in your case
plt.figure(figsize=(12,8))
classes = np.unique(assignments)
colors= ['r','b','k','y'] # 4 CLUSTERS SO 4 COLORS HERE
for s,l in enumerate(classes):
xs = X[:,0]
ys = X[:,1]
plt.scatter(xs[assignments==s], ys[assignments==s], c = colors[s]) # color based on group
plt.plot(kmeans.cluster_centers_[0][0], kmeans.cluster_centers_[0][1], 'ro',markersize=16, alpha = 0.5, label='')
plt.plot(kmeans.cluster_centers_[1][0], kmeans.cluster_centers_[1][1], 'bo',markersize=16, alpha = 0.5)
plt.plot(kmeans.cluster_centers_[2][0], kmeans.cluster_centers_[2][1], 'ko',markersize=16, alpha = 0.5)
plt.plot(kmeans.cluster_centers_[3][0], kmeans.cluster_centers_[3][1], 'yo',markersize=16, alpha = 0.5)
plt.grid()
使用
iris
数据集的示例:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data[:,0:2]
y = iris.target
kmeans = KMeans(n_clusters=4)
kmeans.fit(X)
assignments = kmeans.labels_ # this is the CLUSTERS column in your case
plt.figure(figsize=(12,8))
classes = np.unique(assignments)
colors= ['r','b','k','y'] # 4 CLUSTERS SO 4 COLORS HERE
for s,l in enumerate(classes):
xs = X[:,0]
ys = X[:,1]
plt.scatter(xs[assignments==s], ys[assignments==s], c = colors[s]) # color based on group
plt.plot(kmeans.cluster_centers_[0][0], kmeans.cluster_centers_[0][1], 'ro',markersize=16, alpha = 0.5, label='')
plt.plot(kmeans.cluster_centers_[1][0], kmeans.cluster_centers_[1][1], 'bo',markersize=16, alpha = 0.5)
plt.plot(kmeans.cluster_centers_[2][0], kmeans.cluster_centers_[2][1], 'ko',markersize=16, alpha = 0.5)
plt.plot(kmeans.cluster_centers_[3][0], kmeans.cluster_centers_[3][1], 'yo',markersize=16, alpha = 0.5)
plt.grid()
因为
Classe==0
或1
clusters
仅仅是一个整数,告诉您有多少簇呈现这些特征,而不是每个簇是在Classe==0
还是1
中
Cluster = df_diabetes_normalizado['clusters']
...
scatter = ax.scatter(x,y,c=Cluster, ...)
您的绘图错误地使用了颜色来显示c=Cluster
,即簇数,您没有在任何地方绘制Classe
。改为绘制Classe
。(您可以选择使用size=Clusters
,因此较大的簇绘制的图更大)
2) “生成[两个变量]的正确散点图”的定义不明确;显然,你有8个变量('Numero Gravida'、'Glicose'、'Pressao'、…、'Idade'),你的因变量('Classe')是所有8个变量的函数,而不仅仅是你任意选择的两个来绘制的变量:x='Glicose'和y='Massa下士'
- 假设您不想进行三维或n维打印,您可以:
- 使用PCA(主成分分析)进行一些降维,然后绘制最重要的两个/三个伪变量(参见示例…)
- 或者基于自定义的簇距离函数构建模型
如果您为数据集发布MCVE,并告诉我们您实际需要的绘图类型,则可以发布代码。因为
Classe==0
或1
clusters
仅仅是一个整数,告诉您有多少簇呈现这些特征,而不是每个簇是在Classe==0
还是1
中
Cluster = df_diabetes_normalizado['clusters']
...
scatter = ax.scatter(x,y,c=Cluster, ...)
您的绘图错误地使用了颜色来显示c=Cluster
,即簇数,您没有在任何地方绘制Classe
。改为绘制Classe
。(您可以选择使用size=Clusters
,因此较大的簇绘制的图更大)
2) “生成[两个变量]的正确散点图”的定义不明确;显然,你有8个变量('Numero Gravida'、'Glicose'、'Pressao'、…、'Idade'),你的因变量('Classe')是所有8个变量的函数,而不仅仅是你任意选择的两个来绘制的变量:x='Glicose'和y='Massa下士'
- 假设您不想进行三维或n维打印,您可以:
- 使用PCA(主成分分析)进行一些降维,然后绘制最重要的两个/三个伪变量(参见示例…)
- 或者基于自定义的簇距离函数构建模型
如果您为数据集发布MCVE,并告诉我们您实际需要什么样的绘图,则可以发布代码。使用更好的绘图是什么意思?这是可行的,问题可能是,你有两个以上的变量影响你的集群。我想在我的集群中创建一个带有两个类变量的散布。但是我不明白。你能把URL发布到数据集吗?而不是数据集的图像?为了让我们其余的人都能复制,你说的更好的情节是什么意思?这是可行的,问题可能是,你有两个以上的变量影响你的集群。我想在我的集群中创建一个带有两个类变量的散布。但是我不明白。你能把URL发布到数据集吗?而不是数据集的图像?让我们其他人都能复制。