微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用python拟合曲线的二项分布

如何解决用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 举报,一经查实,本站将立刻删除。