查找特定k-means聚类的大小

我已经在这个问题上挣扎了一段时间,始终无法找到一种方法来获取特定聚类中的数据点数量。以下是我目前的进展:

第一段代码输出我的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_) 

结果如下:

 1 :  26625 6 :  2562 2 :  9892 7 :  2165 3 :  1633 0 :  3072 4 :  1228 5 :  4315 None

(我不确定为什么会有None,但我认为这是一个小问题)

我的下一段代码输出我的8个聚类的每个聚类的中心点:

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

结果如下:

[[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。

Related Posts

如何从数据集中移除EXIF数据?

我在尝试从数据集中的图像中移除EXIF数据(这些数据将…

用于Python中的“智能点”游戏的遗传算法不工作

过去几天我一直在尝试实现所谓的“智能点”游戏。我第一次…

哪个R平方得分更有帮助?

data.drop(‘Movie Title’, ax…

使用线性回归预测GRE分数对录取率的影响

我正在学习线性回归,并尝试在Jupyter笔记本中用P…

使用mlrMBO贝叶斯优化进行SVM超参数调优时出现错误

我试图针对一个分类任务优化SVM,这个方法在许多其他模…

Keras模型的二元交叉熵准确率未发生变化

我在网上看到了很多关于这个问题的提问,但没有找到明确的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注