gpt4 book ai didi

python - 使用组件参数的 GaussianMixture 初始化 - sklearn

转载 作者:行者123 更新时间:2023-11-28 21:43:18 27 4
gpt4 key购买 nike

我想使用 sklearn.mixture.GaussianMixture 来存储高斯混合模型,以便以后可以使用它来生成样本或使用 score_samples 方法在样本点生成值。这是一个示例,其中分量具有以下权重、均值和协方差

import numpy as np
weights = np.array([0.6322941277066596, 0.3677058722933399])
mu = np.array([[0.9148052872961359, 1.9792961751316835],
[-1.0917396392992502, -0.9304220945910037]])
sigma = np.array([[[2.267889129267119, 0.6553245618368836],
[0.6553245618368835, 0.6571014653342457]],
[[0.9516607767206848, -0.7445831474157608],
[-0.7445831474157608, 1.006599716443763]]])

然后我按如下方式初始化了混合物

from sklearn import mixture
gmix = mixture.GaussianMixture(n_components=2, covariance_type='full')
gmix.weights_ = weights # mixture weights (n_components,)
gmix.means_ = mu # mixture means (n_components, 2)
gmix.covariances_ = sigma # mixture cov (n_components, 2, 2)

最后我尝试根据导致错误的参数生成样本:

x = gmix.sample(1000)
NotFittedError: This GaussianMixture instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.

据我了解,GaussianMixture 旨在使用高斯混合来拟合样本,但有没有办法为其提供最终值并从那里继续?

最佳答案

J.P.Petersen,你太棒了!看到您的回答后,我比较了使用 fit 方法引入的变化。似乎初始实例化并没有创建 gmix 的所有属性。具体来说,它缺少以下属性,

covariances_
means_
weights_
converged_
lower_bound_
n_iter_
precisions_
precisions_cholesky_

前三个是在分配给定输入时引入的。其中,对于我的应用程序,我唯一需要的属性是 precisions_cholesky_,它是逆协方差矩阵的 cholesky 分解。作为最低要求,我将其添加如下,

gmix.precisions_cholesky_ = np.linalg.cholesky(np.linalg.inv(sigma)).transpose((0, 2, 1))

关于python - 使用组件参数的 GaussianMixture 初始化 - sklearn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42392887/

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