我希望能够在关节最小二乘方向中沿着渐变移动。
我以为我可以使用scipy.optimize.leastsq
(http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.leastsq.html)来完成此操作。 (也许我错了,也许有更简单的方法吗?)。
我很难理解使用什么,以及如何在联合最小二乘方向上移动,同时仍然增加参数。
我需要做的是输入以下内容:
[1,0]
并且,让它沿着最小二乘方向移动,这意味着增加值1
和0
中的一个或两个,但是这样做,使得平方值的总和小到可能。
这意味着[1,0]
会增加到[1, <something barely greater than 0>]
,最终会达到[1,1]
。此时,1
&#39; s将以相同的速率增加。
我该怎么编程呢?在我看来,scipy.optimize.leastsq
会在这里使用,但我无法弄清楚如何使用它?
三江源。
答案 0 :(得分:1)
我认为您不需要scipy.optimize.leastsq
,因为您的问题可以通过分析解决。在任何时候,np.sum(x)
是x
数组的函数2*x
的渐变是np.argmin
。因此,如果要获得最小的增量,则必须增加渐变的最小分量,您可以使用def g(x):
return np.array(2*x)
x = np.array([1.,0.])
for _ in range(200):
eps = np.zeros_like(x)
index = np.argmin(g(x))
eps[index] = 0.01 #or whatever
x += eps
print(x)
找到该分量。这是一个简单的解决方案:
np.argmin
当多个索引具有相同的值时,eps
会返回第一个匹配项,因此您将遇到某些可以最大限度地减少[{"pseudo":"Lucia","id":2},{"pseudo":"Romain","id":1}]