scipy - Python Jupyter Notebook scipy
问题描述
很长一段时间以来,我都能够添加数据并进行拟合,然后用数据绘制曲线。但最近我得到了这个:
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-6-6f645a2744bc> in <module>
1 poland = prepare_data(europe_data, 'Poland')
----> 2 plot_all(poland, max_y=400000)
3 poland
~/Pulpit/library.py in plot_all(country, max_x, max_y)
43 def plot_all(country, max_x = 1000, max_y = 500000):
44
---> 45 parameters_logistic = scipy.optimize.curve_fit(func_logistic, country['n'], country['all'])[0]
46 parameters_expo = scipy.optimize.curve_fit(func_expo, country['n'], country['all'])[0]
47
/usr/local/lib64/python3.6/site-packages/scipy/optimize/minpack.py in curve_fit(f, xdata, ydata, p0, sigma, absolute_sigma, check_finite, bounds, method, jac, **kwargs)
787 cost = np.sum(infodict['fvec'] ** 2)
788 if ier not in [1, 2, 3, 4]:
--> 789 raise RuntimeError("Optimal parameters not found: " + errmsg)
790 else:
791 # Rename maxfev (leastsq) to max_nfev (least_squares), if specified.
RuntimeError: Optimal parameters not found: Number of calls to function has reached maxfev = 800.
以下是所有 Python Jupyter Notebook 文件:https ://files.fm/u/zj7cc6ne#sign_up
如何解决这个问题?
解决方案
scipy.optimize.curve_fit 采用关键字参数 p0。
参数的初始猜测(长度 N)。如果为 None,则初始值将全部为 1(如果函数的参数数量可以使用自省来确定,否则会引发 ValueError)。
如果默认值 1 与结果相差太远,算法可能不会收敛。尝试设置一些对您的问题有意义的值。
推荐阅读
- azure-ad-b2c - 以 Azure B2C 作为权限生成魔术登录链接
- spring-boot - 即使我在其他地方配置了 JdbcUserDetailsManager,为什么 InMemoryUserDetailsManager 会注入到这个控制器中?
- java - Java中'.class'的用途是什么
- android - 我在 github 中看到了 yt-watchme 代码。当我构建 ndk 时它没有完成
- jquery - 用于更改各种 DIV 中的 HTML 的动态 JQuery 函数
- php - 检索当前目录时出错:Docker 容器中的 getcwd
- jquery - 如何动态添加字段
- sql - 组合字符串以选择列
- php - for 循环 php 显示“数组”
- python - 成功连接后,由于 cmd 提示符输出中的“\x1b”转义序列,用于 SSH 进入 Windows 10 的 Python 脚本失败