gpt4 book ai didi

python - 使用 Python 创建非线性回归

转载 作者:行者123 更新时间:2023-11-28 21:57:02 24 4
gpt4 key购买 nike

我有一个简单的数据;

x = numpy.array([1,2,3,
4,5,6,
7,8,9,
10,11,12,
13,14,15,
16,17,18,
19,20,21,
22,23,24])


y = numpy.array([2149,2731,3397,
3088,2928,2108,
1200,659,289,
1141,1726,2910,
4410,5213,5851,
5817,5307,4314,
3656,3081,3103,
3535,4512,5584])

我可以创建线性回归并使用这段代码进行猜测:

z = numpy.polyfit(x, y, 1)
p = numpy.poly1d(z)

但我想创建此数据的非线性回归并使用如下代码绘制图形:

import matplotlib.pyplot as plt
xp1 = numpy.linspace(1,24,100)
plt.plot(x, y, 'r--', xp1, p(xp1))
plt.show()

我看到了这样的代码,但这对我没有帮助:

def func(x, a, b, c):
return a*np.exp(-b*x) + c
...
popt, pcov = curve_fit(func, x, y)
...

那么进行非线性回归的代码是什么?我可以用非线性方程进行一些猜测吗?

最佳答案

你指的是 scipy 模块。你是对的,这可能是你想要使用的模块。

然后,您有兴趣了解 curve_fit(func, x, y) 的工作原理。这个想法是你想最小化一些函数模型(比如 y = m*x + b 一条线)和你的模型上的点之间的差异。 func 参数表示此模型:您正在创建一个函数,该函数将模型的因变量(在我的示例中为 x)和所有后续参数作为其第一个参数模型的参数(在线性模型的情况下为 mb)。您已经计算出的 xy

但真正的问题是,是的,我知道我没有回答你的问题,是你需要为你的数据手动找出某种模型(至少模型类型:指数、线性、多项式等.).没有简单的方法可以解决这个问题。从您的数据来看,尽管我会选择

形式的模型
y = a*sin(b*x + c) + d*x + e

或 5 次多项式。

关于python - 使用 Python 创建非线性回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20439491/

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