弄清楚一点。有两个相关的问题:最小化函数
数据拟合模型
模型与观测数据的拟合就是寻找一个模型的参数,使模型数据与观测数据之间的误差最小化。在
least_squares方法只是最小化关于x(x可以是向量)的以下函数。在F(x) = 0.5 * sum(rho(f_i(x)**2), i = 0, ..., m - 1)
(rho是一个损失函数,默认值是rho(x) = x,所以现在不要介意它)
least_squares(func, x0)期望对func(x)的调用将返回一个向量[a1, a2, a3, ...],该向量将计算平方和:S = 0.5 * (a1^2 + a2^2 + a3^2 + ...)。在
least_squares将调整x0以最小化{}。在
因此,为了使用它来拟合模型与数据,必须在模型和实际数据之间构造一个误差函数-残差,然后最小化该残差函数。在您的情况下,您可以这样写:import numpy as np
from scipy.optimize import least_squares
x = np.asarray(range(20,401,20))
y = np.random.rand(20)
params = np.array([1,1])
def funcinv(x, a, b):
return b + a/x
def residuals(params, x, data):
# evaluates function given vector of params [a, b]
# and return residuals: (observed_dat