gpt4 book ai didi

Python scipy.optimise.curve_fit 给出线性拟合

转载 作者:行者123 更新时间:2023-11-30 21:54:13 31 4
gpt4 key购买 nike

我在使用 scipy 的 curve_fit 参数时遇到了一个问题。我最初复制了文档建议的代码。然后我稍微改变了方程,效果很好,但是增加了 np.linspace,整个预测最终变成了一条直线。有什么想法吗?

import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt


def f(x, a, b, c):
# This works fine on smaller numbers
return (a - c) * np.exp(-x / b) + c


xdata = np.linspace(60, 3060, 200)
ydata = f(xdata, 100, 400, 20)

# noise
np.random.seed(1729)
ydata = ydata + np.random.normal(size=xdata.size) * 0.2

# graph
fig, ax = plt.subplots()
plt.plot(xdata, ydata, marker="o")
pred, covar = curve_fit(f, xdata, ydata)
plt.plot(xdata, f(xdata, *pred), label="prediciton")
plt.show()

Clear exponential gving a straight line fit

最佳答案

您可能需要从更好的猜测开始,默认的初始猜测 (1.0, 1.0, 1.0) 似乎位于发散区域。

我使用最初的猜测p0 = (50,200,100)并且它有效

fig, ax = plt.subplots()
plt.plot(xdata, ydata, marker="o")
pred, covar = curve_fit(f, xdata, ydata, p0 = (50,200,100))
plt.plot(xdata, f(xdata, *pred), label="prediciton")
plt.show()

results

关于Python scipy.optimise.curve_fit 给出线性拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59391249/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com