Python——fitter包:拟合样本数据的分布
安装fitter
pip install fitter
使用样例
# 数据生成
from scipy import stats
data = stats.gamma.rvs(2, loc=1.5, scale=2, size=10000)
# 通过scipy生成服从gamma分布的10000个样本
from fitter import Fitter # 拟合分布
f = Fitter(data, distributions=['gamma', 'rayleigh', 'uniform']) # 创建Fitter类
f.fit() # 调用fit函数拟合分布
print(f.summary()) # 输出拟合结果
fitter.Fitter()介绍
fitter.Fitter(data, xmin=None, xmax=None, bins=100, distributions=None, timeout=30, density=True)
-
参数介绍:
distributions
: 待拟合的分布,若不指定则会遍历此中各分布(会耗时较长) distributions = [‘gamma’, ‘erlang’]
xmin, xmax
:截断样本数据的范围,小于xmin或大于xmax的数据会被忽略;
timeout
:单个分布拟合的最大时长,超过该值该分布会被遗弃,默认值为30,单位为秒。
density
:通常设为True
bins
:绘制直方图(histogram)时的分段数、默认不改。 -
调用方法(函数):
可以实现绘图、误差回收、最佳分布及其参数回收这几个功能,可用的方法如下:
f.df_errors # 拟合分布与样本数据之间的误差,包括均方根误差
f.fitted_param['gamma'] #返回拟合分布的参数
f.fitted_pdf['gamma'] # 用最佳参数生成的概率密度PDF
f.get_best(method='sumsquare_error') #返回最佳拟合分布及其参数
f.hist() #绘制组数=bins的标准化直方图
f.plot_pdf(names=None, Nbest=5, lw=2, method='sumsquare_error') # 绘制拟合分布的PDF(概率密度函数),names:需要绘制的分布名,lw: 线宽.
f.summary(Nbest=5, lw=2, plot=True, method='sumsquare_error') # 返回最好的Nbest个分布及误差,并绘制数据分布和Nbest分布
f.distributions 用于拟合的分布