【发布时间】:2017-05-26 19:18:15
【问题描述】:
我现在正在尝试实现一个 python 代码,它计算矩阵方程的最小二乘误差
首先,我有一些二维数据 XDATA(浮点数组数组),形状 100,9 其次,我有一些 2 维 YDATA,形状 100,3 我的函数从 9 个条目和 3 个未知参数的数组中创建了一个由 3 个条目组成的数组。 所以我试图通过线性最小二乘估计这些参数:
#linear regression
#Messured Data
xdata = np.array(data[0:9])
xdata = xdata.astype(np.float)
xdata = np.transpose(xdata)
#True y
ydata = np.array(data[9:12])
ydata = ydata.astype(np.float)
ydata = np.transpose(ydata)
#Timestamps
size = np.size(xdata)/np.size(xdata[0])
def func(xdata,m1,m2,g):
y_est = []
for x in xdata:
u_est = []
u_est.append((m1+m2)*(x[6]+g))
u_est.append(m2*(2*x[5]*x[4]*x[2]+(x[2]**2)*x[7]))
u_est.append(m2*(x[8]-x[2]*(x[4]**2)))
y_est.append(u_est)
y_est = np.array(y_est)
return y_est
print (curve_fit(func,xdata,ydata))
但它引发了一个我(还)无法修复的错误: Error
【问题讨论】:
-
看起来你的 Y 数据是多维的。
curve_fit要求输出数组是一维的。你可以看看this question 或this one。 -
向我们展示
func为典型输入生成的内容。 -
func 从包含 9 个条目的数组数据数组中生成一个包含 3 个条目 [x][3] 的数组数组 [x][9] 在完整 xdata 上运行 func 返回每个数组的计算 ydata输入 xdata ,但我需要估计未给出的参数 (m1,m2,g)。 curve_fit 和 lstsq 抛出相同的错误(见上文)
标签: python arrays optimization scipy least-squares