我必须找到两个输出值最小的输入值:
import pandas as pd
def calc_func(x1, x2):
var1 = pd.DataFrame([x1]).loc[0]
var2 = pd.DataFrame([x2]).loc[0]
y = var1-var2
return(y)
from scipy.optimize import minimize
x0 = [1,2,3]
res = minimize(calc_func,x0,x0, method='BFGS')
但是这给了我以下错误
ValueError:设置具有序列的数组元素。
这可以通过以下事实来解释:使用pandas数据帧进行的计算使用单个数字而不是数组...
最小化我的功能的最佳方法是什么?
评论:
答案 0 :(得分:1)
函数minimize
将R ^ n到R的函数最小化。最简单的方法是将x,y
都连接在单个向量z
中,然后优化该函数关于z
。以下代码有效:
import pandas as pd
from scipy.optimize import minimize
import numpy as np
def calc_func(x):
return(x[0]-x[1])
x1 = [1,2,3]
x2 = [3,4,5]
v1 = pd.DataFrame([x1]).values[0]
v2 = pd.DataFrame([x2]).values[0]
x = np.array([v1,v2])
res = minimize(calc_func,x, method='BFGS')
如果您确实需要优化从R ^ n到R ^ m的函数,则需要使用另一种方法(我在快速查看文档时没有发现)。