Python 最小化函数

Python 最小化函数,python,math,scipy,Python,Math,Scipy,我有值Y和X的列表,我想最小化这个函数 如果有必要,我有起始值​​函数可以从中开始搜索(0.01604=θ2,1.143=θ1,1.537=θ0) 我实现了Huber函数 def Huber(l,delta): if m.fabs(l)<=delta: return 1/2*(l)**2 else: return delta*m.fabs(l)-1/2*delta**2 而且 TypeError: cannot convert the

我有值Y和X的列表,我想最小化这个函数

如果有必要,我有起始值​​函数可以从中开始搜索(0.01604=θ2,1.143=θ1,1.537=θ0)

我实现了Huber函数

def Huber(l,delta):

    if m.fabs(l)<=delta:
        return 1/2*(l)**2
    else:
        return delta*m.fabs(l)-1/2*delta**2
而且

TypeError: cannot convert the series to <class 'float'>
TypeError:无法将序列转换为

如何使其正确?

只需提供一个包含起点的列表:

start=[1.537,1.143,0.01604]
然后使用SciPy的
优化
():

从scipy.optimize导入最小化
def my_函数(参数):
θ0,θ1,θ2=args
#这里返回函数的值
优化=最小化(my_函数,开始)
在上述情况下,
Theta0
Theta1
Theta2
是变量。这个问题不清楚它们是否是常数。如果是这种情况,只需使用上述代码作为模板,并将起点解包到变量,例如

from scipy.optimize import minimize

start = [1, 1]

def my_function(args):
    X, y = args # Thetas constant
    # here return the value of the function

optimized = minimize(my_function, start)
注意:您应该只传递函数名,而不是函数调用,即

minimize(my_function, start) # works
minimize(my_function(....), start) # doesn't work

你能发布你的代码吗?你确定你把方块放在正确的地方了吗?这个函数没有最小值。你说的“起始点”是什么意思?θ是常数吗?或者你想找到θ来最小化箭头左边函数的值?这个符号不清楚。@rusu_ro1我没有试过,因为我不知道如何使用scipy.minimize来表示一些变量(大于1)的函数,那么@amitavory是正确的。您可以先添加$Y_i$、$X_i$和${X_i}^2$(将总和扩展为4个总和)。因此,除非正方形在第一个或第二个圆括号之外,否则它将成为A-theata0-theta1*B-theta2*C。它没有最小值。在这种情况下,我有一个TypeError:“Series”对象是不可调用的。我更新了问题并添加了代码,我尝试使用@crmk_бббббббббббббббб。我已经更新了答案。函数应该有一个单一的参数,这是要优化的变量。
minimize(my_function, start) # works
minimize(my_function(....), start) # doesn't work