【发布时间】: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