scikit-learn - DPGMM 将所有值聚类到单个聚类中

标签 scikit-learn cluster-analysis dirichlet

所以我已经将我的语料库转换成一个漂亮的 word2vec 矩阵。 该矩阵是一个负数和正数的浮点矩阵。

我似乎无法得到无限狄利克雷过程来给我任何有凝聚力的答案。

示例输出 [for 2 steps] 如下所示:

original word2vec matrix:
[[-0.09597077 -0.1617426  -0.01935256 ...,  0.03843787 -0.11019679
   0.02837373]
 [-0.20119116  0.09759717  0.1382935  ..., -0.08172804 -0.14392921
  -0.08032629]
 [-0.04258473  0.03070175  0.11503845 ..., -0.10350088 -0.18130976
  -0.02993774]
 ..., 
 [-0.08478324 -0.01961064  0.02305113 ..., -0.01231162 -0.10988192
   0.00473828]
 [ 0.13998444  0.05631495  0.00559074 ...,  0.05252389 -0.14202785
  -0.03951728]
 [-0.02888418 -0.0327519  -0.09636743 ...,  0.10880557 -0.08889513
  -0.08584201]]
Running DGPMM for 20 clusters of shape (4480, 100)
Bound after updating        z: -1935576384.727921
Bound after updating    gamma: -1935354454.981427
Bound after updating       mu: -1935354033.389434
Bound after updating  a and b: -inf
Cluster proportions: [  4.48098985e+03   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00]
covariance_type: full
Bound after updating        z: -inf
Bound after updating    gamma: -inf
Bound after updating       mu: -inf
Bound after updating  a and b: -inf
Cluster proportions: [  4.48098985e+03   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00
   1.00053406e+00   1.00053406e+00   1.00053406e+00   1.00053406e+00]

正如观察到的那样,z、gamma 和 mu 似乎都爆炸了,最终系统收敛到只有 1 个集群,这并不准确。我曾尝试为 DPGMM 调整 alpha,但它并没有太大变化。

我想做的是使用自主聚类系统自动聚类更接近意义的词。 K-Means 需要我不想提供的“K”。

最佳答案

这里可能会发生一些隐藏的数值问题。问题是数据集的高维度。这将导致高斯混合建模中的可能性无限小,从而使模型非常不可能。在某些时候,您似乎获得了一个 -inf 值,然后失败了。

总体而言,集群似乎严重失败。如果您查看簇大小,您既可以看到数值问题,也可以看到结果已经退化。

一个簇的大小为 4480.98985,其他 19 个簇的大小为 1.00053406。这应该加起来是 4480,我猜……但事实并非如此。另外,20 个簇中有 19 个由单个元素组成?因此,您也可能遇到离群值问题。

K-means 也不会更好。

关于scikit-learn - DPGMM 将所有值聚类到单个聚类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27494836/

相关文章:

python - 有没有一种有效的方法对标记的相似数据点进行聚类?

python - Python中的光谱聚类和多维缩放

cluster-analysis - 解释 OPTICSxi 聚类的结果

Python包:MLE for Dirichlet distribution

R 监督潜在狄利克雷分配包

python - 使用 gensim 了解 LDA 实现

python - 如何使用 scikit-learn 执行多元线性回归?

python - 带加权样本的弹性净回归或套索回归(sklearn)

python - TfidfVectorizer - 归一化偏差

python - 如何将 scikit-learn 数据集写入 csv 文件