首页 > 解决方案 > 使用 Pandas 数据框最小化函数

问题描述

我必须找到输出值最小化的 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:使用序列设置数组元素。

这可以通过使用熊猫数据框的计算使用单个数字而不是数组来解释......

最小化我的功能的最佳方法是什么?

注释:

标签: python-3.xpandasscipyminimize

解决方案


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


推荐阅读