gpt4 book ai didi

python - 如何在 Scikit-learn 中使用 `Dirichlet Process Gaussian Mixture Model`? (n_components?)

转载 作者:太空狗 更新时间:2023-10-29 23:57:48 33 4
gpt4 key购买 nike

我对“使用 Dirichlet 过程作为集群数量的先验分布的无限混合模型”的理解是,集群的数量由数据决定,因为它们会收敛到一定数量的集群。

R 实现 https://github.com/jacobian1980/ecostates以这种方式决定集群的数量。尽管 R 实现 使用了 Gibbs 采样器,但我不确定这是否会影响这一点。

令我困惑的是 n_components 参数。 n_components: int, default 1 :
混合成分的数量。
如果成分的数量是由数据和狄利克雷过程决定的,那么这个参数是什么?


最终,我试图获得:

(1) 每个样本的聚类分配;

(2) 每个集群的概率向量;和

(3) 每个样本的似然/对数似然。

看起来 (1) 是 predict 方法,(3) 是 score 方法。然而,(1) 的输出完全依赖于 n_components 超参数。

如果这是一个天真的问题,我很抱歉,我对贝叶斯编程还很陌生,并且注意到 Scikit-learn 中有 Dirichlet Process 我想尝试一下.


这是文档: http://scikit-learn.org/stable/modules/generated/sklearn.mixture.DPGMM.html#sklearn.mixture.DPGMM

这是一个用法示例: http://scikit-learn.org/stable/auto_examples/mixture/plot_gmm.html

这是我天真的用法:

from sklearn.mixture import DPGMM
X = pd.read_table("Data/processed/data.tsv", sep="\t", index_col=0)
Mod_dpgmm = DPGMM(n_components=3)
Mod_dpgmm.fit(X)

最佳答案

@maxymoo 在评论中提到,n_components 是一个截断参数。

在与 sklearn 的 DP-GMM 中的 Stick-breaking 表示相关的中餐馆过程的上下文中,新数据点以 |k 的概率加入现有集群 k |/n-1+alpha开始一个概率为 alpha/n-1 + alpha 的新集群。该参数可以解释为狄利克雷过程的浓度参数,它会影响最终的簇数。

与使用 Gibbs 采样的 R 实现不同,sklearn 的 DP-GMM 实现使用变分推理。这可能与结果的差异有关。

可以找到温和的狄利克雷过程教程 here .

关于python - 如何在 Scikit-learn 中使用 `Dirichlet Process Gaussian Mixture Model`? (n_components?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39089637/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com