最小线性平方:scipy.optimize.curve_fit()引发“函数调用的结果不是正确的浮点数组。” [英] Least Linear Squares: scipy.optimize.curve_fit() throws "Result from function call is not a proper array of floats."

查看:87
本文介绍了最小线性平方:scipy.optimize.curve_fit()引发“函数调用的结果不是正确的浮点数组。”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我现在正在尝试实现python代码,该代码计算矩阵方程的最小平方误差

i am trying to implement an python code right now, which computes the least squared error for a matrix equation

首先,我有一些二维数据XDATA(数组浮点数数组),形状100,9
其次,我有一些2维YDATA,形状100,3
我的函数从9个条目和3个未知参数的数组中创建了3个条目的数组。
因此,我试图通过线性最小二乘法来估算这些参数:

First, I have some 2 dimensional Data XDATA (Array of Array of Floats), Shape 100,9 Second, I have some 2 dimesional YDATA, Shape 100,3 My function creates an array of 3 entries out of an array of 9 entries and 3 unknow parameters. So im trying to estimate these parameters via linear least squares:

#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))

但是会抛出错误我还无法解决:
错误

But it throws an error i am not (yet) able to fix: Error

推荐答案

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

curve_fit solves a nonlinear least squares problem. For linear least squares, better use lsq_linear or numpy.lstsq

这篇关于最小线性平方:scipy.optimize.curve_fit()引发“函数调用的结果不是正确的浮点数组。”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆