我试图写一个函数,实现最小二乘回归的“有效方差法”。在这个公式中,模型的导数需要在最小二乘和中使用。我试图写这个函数,这样人们就可以把一个用symy写的模型交给它,这样函数就可以自动将其区分为正确的变量,并将其给予scipy最小化函数,以在多个变量中最小化它。
我在尝试这个时遇到了很多错误,例如:
当我尝试使用simpy mandify函数时,“_mandifygenerated()missing 1 required positional argument”,比如:
A = sp.Function("A")
x, y = sp.symbols("x y")
A = 1 + x**2 + y**2
g = sp.lambdify([x, y], A, "numpy")
minimize(g, [1, 1])
字符串
和“ufunc 'isfinite' not supported for the input types,and the inputs could not be safely coerced to any supported types according to casting rule ''safe''"当我尝试使用sp.N来尽可能简单地对函数进行数值评估时,我然后以类似于以下的方式返回到最小化器(我假设):
minimize(lambda t: sp.N((t + x).subs(x, sp.pi)), [1])
型
(在这个特定的情况下,它返回“'numpy.ndarray' object has no attribute 'subs'”,但在我的函数中实现时会出现上述错误)。
1条答案
按热度按时间63lcw9qa1#
问题是
g
期望接收两个单独的参数,x
和y
,但scipy.optimize.minimize
需要一个接受单个数组参数的可调用对象,一个简单的解决方案是创建一个新的函数h
,它接受一个参数z
,并将其拆分为参数x
和y
。调用g(x, y)
。然后您可以使用minimize
优化h
。字符串