我的目标是在一些约束条件下优化三次多项式函数的最小二乘法,所以我的目标是使用scipy.optimize.minimize(...., method = 'SLSQP', ....)
。在优化问题中,在方法中引入雅可比矩阵总是很好的。
但是,我不确定如何设计我的“jac”函数。在
我的目标函数是这样设计的:
def least_squares(args_pol, x, y):
a, b, c, d, e = args_pol
return ((y-(a*x**4 + b*x**3 + c*x**2 + d*x + e))**2).sum()
其中x
和{scipy.ompitmize.minimize
的“雅可比”是目标函数的梯度,因此它的一阶导数数组。在
例如,对于args_pol
,它很容易找到一阶导数
但是对于我的numpy.array
中的每一个[x}i],x都是导数
dx_i = 2*(a*x[i]**4 + b*x[i]**3 + c*x[i]**2 + d*x[i] + e - y[i])*
(4*a*x[i]**3 + 3*b*x[i]**2 + 2*c*x[i] + d)
因此,合理的方法是计算每个导数为numpy.array
dx
和{
我的问题是,梯度回归函数应该是什么形式的结果?例如它应该看起来像
return np.array([[da, db, dc, dd, de], [dx[1], dx[2], .... dx[len(x)-1]],
[dy[1], dy[2],..........dy[len(y)-1]]])
还是应该看起来像
return np.array([da, db, dc, dd, de, dx, dy])
谢谢你的解释。在
目前没有回答
相关问题 更多 >
编程相关推荐