zoukankan      html  css  js  c++  java
  • 利用 Python Fitter 判断数据样本符合那种分布函数

    # Python拟合数据样本的分布
    # 安装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', 'rayleigh'])
    f.fit()
    f.summary() #返回排序好的分布拟合质量(拟合效果从好到坏),并绘制数据分布和Nbest分布
    f.df_errors #返回这些分布的拟合质量(均方根误差的和)
    f.fitted_param #返回拟合分布的参数
    f.fitted_pdf #使用最适合数据分布的分布参数生成的概率密度
    print(f.get_best(method='sumsquare_error')) #返回最佳拟合分布及其参数
    f.hist() #绘制组数=bins的标准化直方图
    f.plot_pdf(names=None, Nbest=3, lw=2) #绘制分布的概率密度函数
    print(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型数据
    

      

  • 相关阅读:
    python近期遇到的一些面试问题(一)
    python selenium 三种等待方式详解
    Nginx的ip_hash指令
    Nginx Tengine ngx_http_upstream_check_module 健康功能检测使用
    一个奇怪的网络故障 默认网关为0.0.0.0(Windows)
    win2003 server的域用户加入本地管理员组
    linux 添加secondary ip
    亚马逊云VPS AWS更改LINUX为ROOT权限密码登陆
    亚马逊云EC2做PPTP SERVER的笔记
    Linux性能分析 vmstat基本语法
  • 原文地址:https://www.cnblogs.com/jeshy/p/14268634.html
Copyright © 2011-2022 走看看