python-3.x - 使用 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:使用序列设置数组元素。
这可以通过使用熊猫数据框的计算使用单个数字而不是数组来解释......
最小化我的功能的最佳方法是什么?
注释:
- 不幸的是,不能完全从函数中删除所有 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 的函数,那么你需要使用另一种方法(我通过快速查看文档没有找到)。
推荐阅读
- sql - 将具有重复值的数据插入 Postgresql
- java - 使用菱形分配具有有界通配符的泛型类型
- java - 建立 POST 请求以保存在 mySQL 上后,我的 InputStream 与我的网站返回 java.IO.FileNotFoundException
- paypal-sandbox - PayPal 智能按钮:获取交易详情并更新到数据库
- python - 如何在实际运行值的命令之前使用字典中的值
- python - 如何使用 flask-sqlalchemy 从多个表中获取数据
- html - 如何使用vue js将数组中的数组检索到表中
- reactjs - 删除文本时清除在 TextInput 中输入的文本状态
- javascript - 我正在使用 jquery 中继器 js 库来重复 html,但是当我尝试在嵌套中继器中添加元素时,外部中继器也称为
- ios - 发布到 AppStore 时的必要用户信息