Pandas中内置了多目标排序算法吗?
我发现this是NSGA-II算法(这是我想要的),但是它需要将目标函数作为单独的文件传递。在理想的世界中,我将对所有数据使用一个DataFrame,在指定目标函数列(以及其他必需参数)的同时调用诸如multi_of_sort
之类的方法,并且它将返回另一个具有Pareto最优值的DataFrame值。
这似乎对熊猫来说是微不足道的,但我可能是错的。
答案 0 :(得分:1)
事实证明,上面引用的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))