python - DataFrame多目标排序来定义帕累托边界
问题描述
Pandas 中是否内置了多目标排序算法?
我发现这是一个 NSGA-II 算法(这是我想要的),但它需要将目标函数作为单独的文件传递。在理想情况下,我会为所有数据使用 DataFrame,multi_of_sort
在指定目标函数列(和其他必需参数)时调用类似的方法,它会返回另一个具有 Pareto 最优值的 DataFrame。
这似乎对 Pandas 来说应该是微不足道的,但我可能是错的。
解决方案
事实证明......上面引用的pareto
包确实处理 DataFrame 输入。
import pareto
import pandas as pd
# load the data
df = pd.read_csv('data.csv')
# define the objective function column indices
# optional. default is ALL columns
of_cols = [4, 5]
# define the convergence tolerance for the OF's
# optional. default is 1e-9
eps_tols = [1, 2]
# sort
nondominated = pareto.eps_sort([list(df.itertuples(False))], of_cols, eps_tols)
# convert multi-dimension array to DataFrame
df_pareto = pd.DataFrame.from_records(nondominated, columns=list(df.columns.values))
推荐阅读
- reactjs - React 中的 Openlayers 弹出窗口不遵循地图缩放
- javascript - 数据属性无法从 foreach 中获取动态 ID
- business-objects - 计算数据子集中的单个实例
- php - 如何通过高级自定义字段(ACF)分类创建返回自定义帖子类型的查询?
- python - 使用类函数并在外部处理数据 - PyGame
- python - numpy 元素的内存地址
- javascript - 在函数末尾将 JS 中传入的数组设置为 null 有什么好处吗?
- java - 测试控制器预期为 201,但为 400
- android - Android SDK 在 Linux 上缺少模拟器臂
- django - POST 请求不适用于 Django 表单和 Django 表单集