如何解决用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将该数据拟合到二项式曲线?
解决方法
看来你需要增加迭代次数maxfev,试试
params,covmat = curve_fit(fit_function,10,data,maxfev=2000)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。