KMeans是聚类中常用的一种方法,原理简单,速度快,缺点是必须确定聚类的数目k。
在文本聚类中,一般将每个词算作一个单独的特征,所以特征数目是很大的。如果将文档名作为行,词作为列,通常这个文档-词矩阵是很稀疏的。在K-Means计算中,需要把一个文档的所有词表示成向量,其元素是词的权重(tf-idf等),元素的index是词的索引。在python里,这个向量最好用dict来表示,这样可以避免因矩阵稀疏而存储太多的0。
在<<集体智慧编程>>第三章里有KMeans的python实现,但这个实现有几个缺点:
a. 词向量是用list存的,文档数目一大很容易内存不足(存储太多无用的0)
b. 每个文档词向量的模(cosine的分母)没有提前计算,而是在循环中重复计算