单例模式 canal安装 function loops xaml dtel语言 pyqt usb EaselJS vue安装 less用法 linux源码在线阅读 axure组件库下载 bootstrap中文api文档 rxjava线程切换 cmd查看mysql版本 flutter 缺点 python取随机数 python如何实现多线程 python做界面 python自学入门 python函数内定义函数 python打开文件夹 java8特性 java中的正则表达式 java语言简介 java函数调用 javascript源代码 bcdautofix 视频加字幕软件哪个好 微信客户管理系统 gilisoft fireworks8序列号 批处理if mpg格式转换 ip地址转换器 光头强换肤助手 pp安卓助手 opengl版本过低 js弹出框
当前位置: 首页 > 学习教程  > 编程语言

Python拟合数据样本的分布

2020/12/28 20:18:25 文章标签:

安装fitter pip install fitter 生成一段模拟数据 from scipy import stats import numpy as np # N(0,2)N(0,10) data1 list(stats.norm.rvs(loc0, scale2, size70000)) data2 list(stats.norm.rvs(loc0, scale20, size30000)) datanp.array(data1data2)利用fitter拟合数…

安装fitter

pip install fitter

生成一段模拟数据

from scipy import stats
import numpy as np
# N(0,2)+N(0,10)
data1 = list(stats.norm.rvs(loc=0, scale=2, size=70000))
data2 = list(stats.norm.rvs(loc=0, scale=20, size=30000))
data=np.array(data1+data2)

利用fitter拟合数据样本的分布

from fitter import Fitter
# may take some time since by default, all distributions are tried
# but you call manually provide a smaller set of distributions
f = Fitter(data, distributions=['norm', 't', 'laplace'])
f.fit()
f.summary()

拟合的误差与拟合的概率密度曲线
以上输出为拟合的误差与拟合的概率密度曲线及数据的直方图。

方法详解

Fitter方法

Fitter(data, xmin=None, xmax=None, bins=100, distributions=None, verbose=True, timeout=10)

参数:
data (list) –输入的样本数据;
xmin (float) – 如果为None,则使用数据最小值,否则将忽略小于xmin的数据;
xmax (float) – 如果为None,则使用数据最大值,否则将忽略大于xmin的数据;
bins (int) – 累积直方图的组数,默认=100;
distributions (list) – 给出要查看的分布列表。 如果没有,则尝试所有的scipy分布(80种),常用的分布distributions=[‘norm’,‘t’,‘laplace’,‘cauchy’, ‘chi2’,’ expon’, ‘exponpow’, ‘gamma’,’ lognorm’, ‘uniform’];
verbose (bool) –
timeout – 给定拟合分布的最长时间,(默认=10s) 如果达到超时,则跳过该分布。

Fitter返回

f.summary() #返回排序好的分布拟合质量(拟合效果从好到坏),并绘制数据分布和Nbest分布
f.df_errors #返回这些分布的拟合质量(均方根误差的和)
f.fitted_param #返回拟合分布的参数
f.fitted_pdf #使用最适合数据分布的分布参数生成的概率密度
f.get_best(method='sumsquare_error') #返回最佳拟合分布及其参数
f.hist() #绘制组数=bins的标准化直方图
f.plot_pdf(names=None, Nbest=3, lw=2) #绘制分布的概率密度函数 
from fitter import Fitter
import numpy as np
 
arr = np.arange(1, 200)
np.random.shuffle(arr) # arr为创建的随机数
 
fitter_dis = Fitter(arr)
fitter_dis.fit()
distribution_df = fitter_dis.summary() # 这里可以得到error最小的Dataframe型数据

本文链接: http://www.dtmao.cc/news_show_550462.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?