python:拟合高斯模型

注意本篇讲的是如何用一堆离散数据点拟合出高斯模型,而非已知一堆数据点对求解高斯函数。

拟合单高斯模型(正态分布)

若你有一堆离散数据点,想拟合出其高斯分布。实际上只需要求其均值和标准差。

为了好看一点,可以再先出其直方图。一般用plt.hist来画直方图。

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import math
import matplotlib.mlab as mlab
from scipy.stats import norm


x = np.array(yourlist) 这里填入你的数据list 如果已经是array格式就不用转化了
#n, bins, patches = plt.hist(x, 20, density=1, facecolor='blue', alpha=0.75)  #第二个参数是直方图柱子的数量
mu =np.mean(x) #计算均值 
sigma =np.std(x) 
num_bins = 30 #直方图柱子的数量 
n, bins, patches = plt.hist(x, num_bins,density=1, alpha=0.75) 
#直方图函数,x为x轴的值,normed=1表示为概率密度,即和为一,绿色方块,色深参数0.5.返回n个概率,直方块左边线的x值,及各个方块对象 
y = norm.pdf(bins, mu, sigma)#拟合一条最佳正态分布曲线y 

plt.grid(True)
plt.plot(bins, y, 'r--') #绘制y的曲线 
plt.xlabel('values') 

你可能感兴趣的:(Python,高斯模型,正态分布,拟合,GMM)