用于文本聚类的 k-means
k-means for text clustering
我正在尝试为文本聚类实施 k-means,特别是英语句子。到目前为止,我对每个文档(句子)都有一个术语频率矩阵。我对 k-means 在文本数据上的实际实现有点困惑。这是我对它应该如何工作的猜测。
算出所有句子中唯一单词的个数(很大的一个数,称之为n
)。
创建 k
n
维向量(簇)并用一些随机数填充 k
向量的值(我如何决定这些数字的界限是?)
确定每个q
句子到随机k
簇、重新定位簇等的欧氏距离(如果n
非常大像英语,计算这些向量的欧几里德距离不会很费钱吗?)
感谢您的任何见解!
评论有点长
如果您有文档术语矩阵,请找到(协方差矩阵的)主成分。确定原始数据在主成分中的系数space。您可以在此 space.
中进行 k 均值聚类
对于文本数据,您通常需要一堆维度——20、50、100,甚至更多。另外,我会推荐高斯混合 models/expectation-maximization 聚类而不是 k-means,但那是另一回事了。
在这里重新提出一个有点老的问题,但值得将两者联系起来...
通常,您会使用某种 locally-sensitive 散列法而不是依赖单词出现的频率。但无论哪种方式,手动组装特征矩阵都是一件非常麻烦的事情。
此 指导您如何使用 scikit-learn 从文档列表创建特征矩阵,并解释了这些步骤。我认为它会帮助您了解所需步骤的顺序。
我正在尝试为文本聚类实施 k-means,特别是英语句子。到目前为止,我对每个文档(句子)都有一个术语频率矩阵。我对 k-means 在文本数据上的实际实现有点困惑。这是我对它应该如何工作的猜测。
算出所有句子中唯一单词的个数(很大的一个数,称之为
n
)。创建
k
n
维向量(簇)并用一些随机数填充k
向量的值(我如何决定这些数字的界限是?)确定每个
q
句子到随机k
簇、重新定位簇等的欧氏距离(如果n
非常大像英语,计算这些向量的欧几里德距离不会很费钱吗?)
感谢您的任何见解!
评论有点长
如果您有文档术语矩阵,请找到(协方差矩阵的)主成分。确定原始数据在主成分中的系数space。您可以在此 space.
中进行 k 均值聚类对于文本数据,您通常需要一堆维度——20、50、100,甚至更多。另外,我会推荐高斯混合 models/expectation-maximization 聚类而不是 k-means,但那是另一回事了。
在这里重新提出一个有点老的问题,但值得将两者联系起来...
通常,您会使用某种 locally-sensitive 散列法而不是依赖单词出现的频率。但无论哪种方式,手动组装特征矩阵都是一件非常麻烦的事情。
此