gpt4 book ai didi

python - Sklearn 高斯混合锁定参数?

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:36 25 4
gpt4 key购买 nike

我正在尝试拟合一些高斯函数,其中我已经对初始参数有了很好的了解(在本例中,我正在生成分布,因此我应该始终能够拟合这些分布)。但是,我似乎无法弄清楚如何强制平均值为例如两个高斯函数都为 0。是否可以? m.means_ = ... 不起作用。

from sklearn import mixture
import numpy as np
import math
import matplotlib.pyplot as plt
from scipy import stats

a = np.random.normal(0, 0.2, 500)
b = np.random.normal(0, 2, 800)

obs = np.concatenate([a,b]).reshape(-1,1)
plt.hist(obs, bins = 100, normed = True, color = "lightgrey")

min_range = -8
max_range = 8

n_gaussians = 2

m = mixture.GaussianMixture(n_components = n_gaussians)
m.fit(obs)

# # Get the gaussian parameters
weights = m.weights_
means = m.means_
covars = m.covariances_

# Plot all gaussians

n_gaussians = 2

gaussian_sum = []
for i in range(n_gaussians):
mean = means[i]
sigma = math.sqrt(covars[i])

plotpoints = np.linspace(min_range,max_range, 1000)

gaussian_points = weights[i] * stats.norm.pdf(plotpoints, mean, sigma)
gaussian_points = np.array(gaussian_points)

gaussian_sum.append(gaussian_points)

plt.plot(plotpoints,
weights[i] * stats.norm.pdf(plotpoints, mean, sigma))

sum_gaussian = np.sum(gaussian_sum, axis=0)
plt.plot(plotpoints, sum_gaussian, color = "black", linestyle = "--")
plt.xlim(min_range, max_range)

plt.show()

最佳答案

(假设您不想强制,而是给出初始猜测。固定情况可能需要触及整个代码,如果那么整个 EM 方法就有用了。它可能会分解为 scipy 的优化模块可以解决的一些优化问题。)

只需按照 docs 操作即可。它在 GaussianMixture 创建时受支持。

weights_init : array-like, shape (n_components, ), optional

The user-provided initial weights, defaults to None. If it None, weights are initialized using the init_params method.

means_init : array-like, shape (n_components, n_features), optional

The user-provided initial means, defaults to None, If it None, means are initialized using the init_params method.

关于python - Sklearn 高斯混合锁定参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47910446/

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