Python 查找特定k-均值聚类的大小

Python 查找特定k-均值聚类的大小,python,machine-learning,scikit-learn,cluster-analysis,k-means,Python,Machine Learning,Scikit Learn,Cluster Analysis,K Means,我已经有一段时间遇到了这个问题,我似乎无法找到一种方法来获取特定集群中的数据点数量。以下是我目前掌握的情况: 第一个区块输出8个集群中每个集群的数据点数量: def CountFrequency(my_list): freq = {} for item in my_list: if (item in freq): freq[item] += 1 else: freq[item] = 1

我已经有一段时间遇到了这个问题,我似乎无法找到一种方法来获取特定集群中的数据点数量。以下是我目前掌握的情况:

第一个区块输出8个集群中每个集群的数据点数量:

 def CountFrequency(my_list):  
    freq = {} 
    for item in my_list: 
        if (item in freq): 
            freq[item] += 1
        else: 
            freq[item] = 1

    for key, value in freq.items(): 
        print ("% d : % d"%(key, value)) 
​
def clusterCounts(df):

    df3 = df.fillna(df.mean())
    array3 = df3[['column1', 'column2', 'column3']].values
    kmeans = KMeans(n_clusters=8, random_state=42) 
    kmeans.fit(array3)
    return CountFrequency(kmeans.labels_) 
def clusters(df):

    df3 = df.fillna(df.mean())
    array3 = df3[['column1', 'column2', 'column3']].values
    kmeans = KMeans(n_clusters=8, random_state=42) 
    kmeans.fit(array3)
    kmeans.labels_
    clusters = kmeans.cluster_centers_
    return clusters
其结果是:

 1 :  26625
 6 :  2562
 2 :  9892
 7 :  2165
 3 :  1633
 0 :  3072
 4 :  1228
 5 :  4315
 None
[[49.2  2.4 48.4]
 [18.9 18.9 62.1]
 [ 0.2  0.4 99.4]
 [ 1.1 98.3  0.6]
 [98.2  1.   0.9]
 [33.3 32.7 34. ]
 [27.   1.2 71.7]
 [ 3.6 51.9 44.5]]
(不确定为什么
None
存在,但我认为这是一个小问题)

我的下一个代码块为我的8个集群中的每个集群打印质心:

 def CountFrequency(my_list):  
    freq = {} 
    for item in my_list: 
        if (item in freq): 
            freq[item] += 1
        else: 
            freq[item] = 1

    for key, value in freq.items(): 
        print ("% d : % d"%(key, value)) 
​
def clusterCounts(df):

    df3 = df.fillna(df.mean())
    array3 = df3[['column1', 'column2', 'column3']].values
    kmeans = KMeans(n_clusters=8, random_state=42) 
    kmeans.fit(array3)
    return CountFrequency(kmeans.labels_) 
def clusters(df):

    df3 = df.fillna(df.mean())
    array3 = df3[['column1', 'column2', 'column3']].values
    kmeans = KMeans(n_clusters=8, random_state=42) 
    kmeans.fit(array3)
    kmeans.labels_
    clusters = kmeans.cluster_centers_
    return clusters
结果:

 1 :  26625
 6 :  2562
 2 :  9892
 7 :  2165
 3 :  1633
 0 :  3072
 4 :  1228
 5 :  4315
 None
[[49.2  2.4 48.4]
 [18.9 18.9 62.1]
 [ 0.2  0.4 99.4]
 [ 1.1 98.3  0.6]
 [98.2  1.   0.9]
 [33.3 32.7 34. ]
 [27.   1.2 71.7]
 [ 3.6 51.9 44.5]]

我正在试图找到一种方法,以找出具有
[33.3 32.7 34.]
质心的集群中有多少数据点。如何隔离此质心的群集以获取其包含的数据点的数量?作为第二个问题,我发布的第一个结果代码块中的键(每个簇有#个数据点)是否与上面质心的顺序对齐?我希望这是明确的,并提前感谢您

你为什么不做一个简单的

for i in range(len(kmeans.cluster_centers)):
  print("Cluster", i)
  print("Center:", kmeans.cluster_centers_[i])
  print("Size:", sum(kmeans.labels_ == i))
因为TRUE是1,FALSE是0