使用 Pandas 数据框最小化函数

Minimize function with Pandas dataframe

我必须找到输出值最小化的 2 个输入值:

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: setting an array element with a sequence.

这可以解释为 pandas 数据帧的计算使用单个数字而不是数组...

最小化函数的最佳方法是什么?

评论:

函数 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,那么你需要使用另一种方法(我通过快速查看文档没有找到)。