使用 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 数据帧的计算使用单个数字而不是数组...
最小化函数的最佳方法是什么?
评论:
- 遗憾的是,无法从函数中完全删除所有 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,那么你需要使用另一种方法(我通过快速查看文档没有找到)。
我必须找到输出值最小化的 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 数据帧的计算使用单个数字而不是数组...
最小化函数的最佳方法是什么?
评论:
- 遗憾的是,无法从函数中完全删除所有 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,那么你需要使用另一种方法(我通过快速查看文档没有找到)。