用python拟合曲线的二项分布

问题描述

我正在尝试使此列表适合二项分布: [0、1、1、1、3、5、5、9、14、20、12、8、5、3、6、9、13、15、18、23、27、35、25、18、12 ,10、9、5、0]

我需要检索分散的参数,以便将其应用于一些我需要做的模拟。我正在使用scipy:

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy.stats import binom

data = [0,1,3,5,9,14,20,12,8,6,13,15,18,23,27,35,25,10,0]

def fit_function(x,n,p):
    return binom.pmf(x,p)

num_bins = 10

params,covmat = curve_fit(fit_function,data)

但是出现以下错误:


RuntimeError Traceback(最近一次通话) 在 4 5#用curve_fit拟合 ----> 6个参数,cov_matrix = curve_fit(fit_function,10,data)

〜\ AppData \ Local \ Continuum \ anaconda3 \ envs \ py37 \ lib \ site-packages \ scipy \ optimize \ minpack.py在curve_fit(f,xdata,ydata,p0,sigma,absolute_sigma,check_finite,界限,方法,jac,** kwargs) 746费用= np.sum(infodict ['fvec'] ** 2) 747,如果不在[1、2、3、4]中: -> 748提高RuntimeError(“找不到最佳参数:” + errmsg) 749其他: 750#如果指定,将maxfev(leastsq)重命名为max_nfev(least_squares)。

RuntimeError:找不到最佳参数:函数调用次数已达到maxfev = 600。


不管错误如何,如何使用python将该数据拟合到二项式曲线?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)