我正在尝试运行自定义 kmeans 聚类算法,并且无法按群集获取 2-d numpy 数组的每一列(术语)的文档频率。我当前的算法有两个 numpy 数组,一个是按术语 [2000L,9500L] 列出文档的原始数据集,另一个是聚类分配 [2000L,]。有5个集群。我需要做的是创建一个数组,列出每个集群的文档频率 - 基本上是每列中的计数,其中列号与不同数组中的行号匹配。输出将是一个 [5L, 9500L] 数组(簇 x 项)。我很难找到一种方法来做相当于 countif 和 group by 的方法。如果我只用 2 个集群运行它,这是一些示例数据和我想要的输出:
import numpy as np
dataset = np.array[[1,2,0,3,0],[0,2,0,0,3],[4,5,2,3,0],[0,0,2,3,0]]
clusters = np.array[0,1,1,0]
#run code here to get documentFrequency
print documentFrequency
>> [1,1,1,2,0],[1,2,1,1,1]
我的想法是选择与每个集群匹配的特定行,因为这样计数应该很容易。例如,如果我可以将数据拆分为以下数组:
cluster0 = np.array[[1,2,0,3,0],[0,0,2,3,0]]
cluster1 = np.array[[0,2,0,0,3],[4,5,2,3,0]]
任何方向或指针将不胜感激!