最小线性方块:scipy.optimize.curve_fit()抛出"函数调用的结果不是正确的浮点数组。"

时间:2017-01-11 20:44:33

标签: python arrays optimization scipy least-squares

我正在尝试实现一个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

1 个答案:

答案 0 :(得分:0)

curve_fit解决了非线性最小二乘问题。对于线性最小二乘法,最好使用lsq_linearnumpy.lstsq