【发布时间】:2023-04-04 01:52:01
【问题描述】:
我熟悉 MATLAB,曾经用自己的函数进行混合分布拟合。我想用 python 学习同样的东西,但很难做到。我不确定如何定义参数常量并获取拟合参数的值,即 mu1、sigma1、mu2、sigma2 和概率。任何帮助将不胜感激。
import scipy.stats as stats
import numpy as np
class gaussian_mixture(stats.rv_continuous):
def _pdf(self,x):
disA=np.exp(-0.5*(x-mu1)**2 / s1**2.) / (s1*np.sqrt(2.0 * np.pi))
disB=np.exp(-0.5*(x-mu2)**2 / s2**2.) / (s2*np.sqrt(2.0 * np.pi))
return p1*disA+(1-p)*disB
mu=6
sigma=2
data1=mu+sigma*np.random.randn(10000)
mu=1
sigma=1
data2=mu+sigma*np.random.randn(10000)
data=np.hstack((data1,data2))
print(data2.shape,data.shape)
height,xrange,patches=plt.hist(data,bins=50,density=True,facecolor='g',alpha=0.75)
gaussian = gaussian_mixture(name='gaussianmix')
【问题讨论】:
标签: python statsmodels