查找特定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

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

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