我已经在表示要素的数据集Kmeans
上应用了top_feat
,并且在集群中创建了列表清单。
我想获得哪个功能属于哪个群集。但是使用此代码,我在所有群集中得到的值都相同。理想情况下,我应该将值设为
len(cluster[0])=249 #(I don't know the exact number)
len(cluster[1])=1
len(cluster[2])=1
#..
len(cluster[5])=1.
我总共有2500个功能。但是运行此代码,我得到的所有群集的长度均为2500。就好像所有群集都在获取所有功能一样。
我使用了一个从0到2500的for循环;这样cluster[w[i]] = top_feat[i]
,其中w[i]
是标签的值。 w= kmeans.labels_
所以if w[i] == 1
,它将是cluster [1] .append(top_feat [i])。在这里,max(w) = 6
cluster = [[]]*((max(w)+1))
for i in range(0,2500):
cluster[w[i]].append(top_feat[i])
答案 0 :(得分:1)
[[]]*((max(w)+1))
中的子列表都引用相同的列表,因此更改一个列表将全部更改,而不是相乘,而是使用列表理解来创建max(w) + 1
个不同的列表:
cluster = [[] for _ in range(max(w) + 1)]