我有一些数据点,我需要拟合这种形式的指数曲线。
y = B * exp(A/x)
(没有的帮助)。
到目前为止,我试图通过应用日志将模型线性化,结果是
log(y/B) = A/x
log(y) = A/x + log(B)
然后我可以把它写在表格里。
Y = AX + B
现在,如果我忽略了B,那么我就可以用
A = pseudoinverse (X) * Y
但我被B的价值观困住了。
我有一个二维数组,我试图对数据拟合一条曲线。我的目标函数是多项式函数:
def objective(x, a, b, c):
return a * x + b * x**2 + c
我使用curve_fit从scipy.optimize找到适合的曲线为数据。但是,我需要知道这个模型有多好。实际数据和估计曲线之间有什么区别?我怎么能找到这个?curve_fit是否使用均方误差来求出曲线?我怎样才能控制这种差异?
在之后,我现在非常怀疑或是否能很好地表示对一些带有随机噪声的数据的良好线性拟合。因此,我想开发一个定制的回归函数,这样我既可以了解它的工作原理,也可以改进现有的工具。
考虑一下这些随机生成的ndarray x和y
import numpy as np
np.random.seed(42)
x = np.random.rand(30) * 10
y = 1.5 * x + 0.3 + (np.random.rand(30) - 0.5) * 3.5
现在,我可以用以下方法定义任意一组数据点的平均/平均绝对偏差:
def aad(X, Y, a, b): # assumes X and Y a