使用Pandas数据框最小化功能

时间:2019-04-30 11:32:47

标签: python-3.x pandas scipy minimize

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

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数据帧进行的计算使用单个数字而不是数组...

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

评论:

  • 不幸的是,不能从功能中删除所有熊猫计算。

1 个答案:

答案 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的函数,则需要使用另一种方法(我在快速查看文档时没有发现)。