查找特定 k-means 集群的大小
Finding the size of a specific k-means cluster
我在这方面遇到了一段时间的麻烦,我似乎无法找到一种方法来获取特定集群中的数据点数量。这是我目前所拥有的:
第一个块输出我的 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。
我在这方面遇到了一段时间的麻烦,我似乎无法找到一种方法来获取特定集群中的数据点数量。这是我目前所拥有的:
第一个块输出我的 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。