【问题标题】:python & scikit: How to get the parameter of fitted models from Gaussian mixture models fitting?python & scikit:如何从高斯混合模型拟合中获取拟合模型的参数?
【发布时间】:2015-08-31 17:48:33
【问题描述】:

拟合gaussian mixture model(X-Y数据集)后,如何获取每个分布的参数?例如mean, std, and weights and angle 每个分布?

我想我可以找到代码here

def make_ellipses(gmm, ax):
    for n, color in enumerate('rgb'):
        v, w = np.linalg.eigh(gmm._get_covars()[n][:2, :2])
        u = w[0] / np.linalg.norm(w[0])
        angle = np.arctan2(u[1], u[0])
        angle = 180 * angle / np.pi  # convert to degrees
        v *= 9
        ell = mpl.patches.Ellipse(gmm.means_[n, :2], v[0], v[1],
                                  180 + angle, color=color)
        ell.set_clip_box(ax.bbox)
        ell.set_alpha(0.5)
        ax.add_artist(ell)

毕竟,要绘制椭圆,您需要知道mean,std,angle,weight。但是代码真的很复杂,不知道有没有更简单的方法呢?

更新:我在http://scikit-learn.org/stable/modules/generated/sklearn.mixture.GMM.html#sklearn.mixture.GMM.fit 中找到了属性,现在我正在处理它。

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    正如您在scikit's doc for GMM 中看到的那样,一旦您训练了模型(称为clf),您就可以使用clf.means_clf.covars_clf.weights_ 访问其参数。

    我要补充一点,您可以使用 clf.converged_ 的值检查您的模型是否已训练/已收敛

    【讨论】:

    • 是的,这就是我更新的内容。很遗憾官方代码没有使用这些属性。
    • 现在不是covars_ 而是covariances_ 在最近的sklearn 版本中
    猜你喜欢
    • 2018-07-19
    • 2017-02-26
    • 2014-08-02
    • 1970-01-01
    • 2018-07-16
    • 2018-04-08
    • 1970-01-01
    • 2014-06-29
    • 2021-09-30
    相关资源
    最近更新 更多