Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 群集数据散点图,显示群集和中心_Python_Scikit Learn_Cluster Analysis_Scatter Plot - Fatal编程技术网

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'(1/0,可能是糖尿病患者或非糖尿病患者)而不是'clusters',它只是一个整数,告诉您有多少簇表现出这些特征,而不是它们是否在
    Classe==0
    1
  • 显然,你有8个变量('Numero Gravida'、'Glicose'、'Pressao'、…、'Idade'),你的因变量('Classe')是所有8个变量的函数,而不仅仅是你任意选择的两个来绘制的变量:x='Glicose'和y='Massa下士'
  • 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'(1/0,可能是糖尿病患者或非糖尿病患者)而不是'clusters',它只是一个整数,告诉您有多少簇表现出这些特征,而不是它们是否在
    Classe==0
    1
  • 显然,你有8个变量('Numero Gravida'、'Glicose'、'Pressao'、…、'Idade'),你的因变量('Classe')是所有8个变量的函数,而不仅仅是你任意选择的两个来绘制的变量:x='Glicose'和y='Massa下士'
  • 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发布到数据集吗?而不是数据集的图像?让我们其他人都能复制。