python 中的递归最小二乘法?
Recursive least squares in python?
有人知道在 Python 中实现递归最小二乘函数的简单方法吗?
我想要一种快速的方法来在每次更新时从输入信号中回归线性漂移([1 2 ... n],其中 n 是到现在为止的时间点数)。 RLS通常是用来做这个的,因为计算时间不会随着时间点数量的增加而增加。
直线与数据 t[]、x[] 的最小二乘拟合由
给出
x = xbar + (C/V)*(t-tbar)
where
xbar = Sum{ x[i]} / N
tbar = sum{ t[i]} / N
V = Sum{ (t[i]-tbar)^2 } / N
C = Sum{ (x[i]-xbar)*(t[i]-tbar) } / N
您可以像这样递增地计算 xbar、tbar、V 和 C:
最初
N = 0
xbar = tbar = C = V = 0
合并数据 t,x:
N += 1
f = 1.0/N
dx = x - xbar
dt = t - tbar
xbar += f*dx
tbar += f*dt
V = (1.0-f)*(V + f*dt*dt)
C = (1.0-f)*(C + f*dx*dt)
请注意,除非您有至少两个数据点,否则 V 将为零,因此没有直线。另请注意,每个 x[] 都可以是一个向量;只要 xbar 和 C 也被计算为向量,相同的公式就可以工作。
RLS 算法在Python Padasip 库中实现。您可以查看 github 上的代码:Padasip source codes
或者你可以直接使用库。 Padasip RLS 算法见documentation
有人知道在 Python 中实现递归最小二乘函数的简单方法吗?
我想要一种快速的方法来在每次更新时从输入信号中回归线性漂移([1 2 ... n],其中 n 是到现在为止的时间点数)。 RLS通常是用来做这个的,因为计算时间不会随着时间点数量的增加而增加。
直线与数据 t[]、x[] 的最小二乘拟合由
给出x = xbar + (C/V)*(t-tbar)
where
xbar = Sum{ x[i]} / N
tbar = sum{ t[i]} / N
V = Sum{ (t[i]-tbar)^2 } / N
C = Sum{ (x[i]-xbar)*(t[i]-tbar) } / N
您可以像这样递增地计算 xbar、tbar、V 和 C:
最初
N = 0
xbar = tbar = C = V = 0
合并数据 t,x:
N += 1
f = 1.0/N
dx = x - xbar
dt = t - tbar
xbar += f*dx
tbar += f*dt
V = (1.0-f)*(V + f*dt*dt)
C = (1.0-f)*(C + f*dx*dt)
请注意,除非您有至少两个数据点,否则 V 将为零,因此没有直线。另请注意,每个 x[] 都可以是一个向量;只要 xbar 和 C 也被计算为向量,相同的公式就可以工作。
RLS 算法在Python Padasip 库中实现。您可以查看 github 上的代码:Padasip source codes
或者你可以直接使用库。 Padasip RLS 算法见documentation