机器学习之EM(代码实践) 原创

1280-金同学

发表文章数:53

首页 » 算法 » 正文

一、EM算法调参

GMM调参:spherical、diag、tied和full
BIC和AIC:
记:L为某模型下样本的似然函数值,k为模型中未
知参数的个数(维度),n为样本个数,则AIC和BIC分别为:机器学习之EM(代码实践)
                    原创
机器学习之EM(代码实践)
                    原创

二、EM相关代码示例

GMM导入:

from sklearn.mixture import GaussianMixture

高斯分布构造:

    mu1_fact = (0, 0, 0)
    cov1_fact = np.diag((1, 2, 3))
    data1 = np.random.multivariate_normal(mu1_fact, cov1_fact, 400)
    mu2_fact = (2, 2, 1)
    cov2_fact = np.array(((1, 1, 3), (1, 2, 1), (0, 0, 1)))
    data2 = np.random.multivariate_normal(mu2_fact, cov2_fact, 100)

E step:

norm1 = multivariate_normal(mu1, sigma1)
norm2 = multivariate_normal(mu2, sigma2)
tau1 = pi * norm1.pdf(data)
tau2 = (1 - pi) * norm2.pdf(data)
gamma = tau1 / (tau1 + tau2)

M step:

mu1 = np.dot(gamma, data) / np.sum(gamma)
mu2 = np.dot((1 - gamma), data) / np.sum((1 - gamma))
sigma1 = np.dot(gamma * (data - mu1).T, data - mu1) / np.sum(gamma)
sigma2 = np.dot((1 - gamma) * (data - mu2).T, data - mu2) / np.sum(1 - gamma)
pi = np.sum(gamma) / n

DPGMM:

# DPGMM
dpgmm=BayesianGaussianMixture(n_components=n_components,covariance_type='full',max_iter=1000,n_init=5,weight_concentration_prior_type='dirichlet_process', weight_concentration_prior=0.1)
dpgmm.fit(x)
centers = dpgmm.means_
covs = dpgmm.covariances_
y_hat = dpgmm.predict(x)

未经允许不得转载:作者:1280-金同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《机器学习之EM(代码实践) 原创》 发布于2020-11-17

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录