用途:当需要概率化聚类归属、并希望聚类参数(均值、方差、权重)带有不确定性时,可用 PyMC 构建贝叶斯高斯混合模型。相比 k-means(硬分配、无不确定性)与 sklearn GMM(软分配、无参数不确定性),贝叶斯方法给出全部后验。
主要能力:软聚类分配;聚类位置、形状、权重的后验不确定性;用 LOO-CV 对成分数 K 做原则性模型选择;支持零膨胀模型、离群检测与状态切换等混合应用。
使用方式:用 pm.Model 定义 Dirichlet 权重、Normal 均值、HalfNormal 标准差,并以 pm.Mixture 作为似然(它边缘化离散潜变量 z,使 NUTS 可采样);用 pm.sample(draws=2000, tune=2000, chains=4, target_accept=0.9) 采样。为打破标签切换,对均值某一维排序:sort_idx = pm.math.argsort(mu_raw[:, 0]); mu = pm.Deterministic("mu", mu_raw[sort_idx])。拟合后按后验样本对每个点计算归属概率(逐样本算 log 权重加多元正态 logpdf,再做 log-sum-exp 归一化),并用分配熵识别边界不确定点。选 K 时用 az.compare(results, ic="loo"),各 K 保持相同 draws 与 tune。协方差可选 spherical、diagonal、full;数据多时再升级到 full。
适用场景:潜在异质性数据、零膨胀计数、离群混合、状态切换时间序列;项目结构含 data/、src/train.py、predict.py、plots.py、notebooks/demo.py 与 mlruns/;示例笔记本用 marimo edit --sandbox demo.py 运行。
限制:数据超过约 10000 点且只需快速硬分配时用 k-means 或 HDBSCAN;非凸簇(弯月、环)不适用;特征超过约 20 维应先降维或使用对角协方差;不忽略标签切换否则后验多峰、汇总统计无意义;避免数据不足时用 full 协方差;不要用肘部图选 K;target_accept 偏低可能不收敛;计算分配概率复杂度为 O(n_samplesNK),应抽稀到约 200 个样本。收费、价格、平台与效果等资料暂未提供。