【问题标题】:Fitting a binomial distribution to a curve with python用python将二项分布拟合到曲线上
【发布时间】:2020-12-21 22:21:09
【问题描述】:

我正在尝试将此列表拟合为二项分布: [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, 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]

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

num_bins = 10

params, covmat = curve_fit(fit_function, 10,  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 in curve_fit(f, xdata, ydata, p0, sigma, absolute_sigma, check_finite, bounds, method , 江淮汽车, **kwargs) 746成本= np.sum(infodict ['fvec'] ** 2) 747 如果不在 [1, 2, 3, 4] 中: --> 748 raise RuntimeError("找不到最优参数:" + errmsg) 749 其他: 750 # 如果指定,将 maxfev (leastsq) 重命名为 max_nfev (least_squares)。

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


无论错误如何,我如何使用 python 将这些数据拟合到二项式曲线?

【问题讨论】:

    标签: python scipy binomial-coefficients


    【解决方案1】:

    看来你需要增加迭代次数maxfev,试试

    params, covmat = curve_fit(fit_function, 10,  data, maxfev=2000)
    

    【讨论】:

      猜你喜欢
      • 2017-09-16
      • 2021-03-14
      • 2020-06-10
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      相关资源
      最近更新 更多