跳转到主要内容

计算Pareto(非支配)集,即skyline运算符/查询。

项目描述

paretoset 构建状态

计算Pareto(非支配)集,即skyline运算符/查询。

观看YouTube视频: 使用Pareto集分析数据

安装

该软件可通过GitHub和PyPI获取。您可以使用pip安装该软件

pip install paretoset

示例 - 数据分析和洞察的Skyline查询

价格低且靠近海滩的酒店

在数据库环境中,Pareto集称为skyline,计算Pareto集称为skyline查询。以下示例来自Börzsönyi等人的论文“Skyline运算符”。

假设您要去度假,您正在寻找价格低且靠近海滩的酒店。这两个目标相互补充,因为靠近海滩的酒店通常更贵。数据库系统无法决定哪个酒店最适合您,但它至少可以向您展示所有有趣的酒店。有趣的酒店是指所有在两个维度上都不比任何其他酒店差的酒店。您现在可以根据对价格和海滩距离的个人偏好做出最终决定。

以下是一个显示Pareto集中酒店的示例。

from paretoset import paretoset
import pandas as pd

hotels = pd.DataFrame({"price": [50, 53, 62, 87, 83, 39, 60, 44], 
                       "distance_to_beach": [13, 21, 19, 13, 5, 22, 22, 25]})
mask = paretoset(hotels, sense=["min", "min"])
paretoset_hotels = hotels[mask]

表现最优秀的销售人员

假设您想查询可能符合加薪条件的销售人员数据库。为了找到每个部门的顶尖表现者(工资低,但销售额高)

from paretoset import paretoset
import pandas as pd

salespeople = pd.DataFrame(
    {
        "salary": [94, 107, 67, 87, 153, 62, 43, 115, 78, 77, 119, 127],
        "sales": [123, 72, 80, 40, 64, 104, 106, 135, 61, 81, 162, 60],
        "department": ["c", "c", "c", "b", "b", "a", "a", "c", "b", "a", "b", "a"],
    }
)
mask = paretoset(salespeople, sense=["min", "max", "diff"])
top_performers = salespeople[mask]

示例 - 多目标优化中的帕累托有效解

假设您想查询可能符合加薪条件的销售人员数据库。为了找到每个部门的顶尖表现者(工资低,但销售额高)

from paretoset import paretoset
import numpy as np
from collections import namedtuple

# Create Solution objects holding the problem solution and objective values
Solution = namedtuple("Solution", ["solution", "obj_value"])
solutions = [Solution(solution=object, obj_value=np.random.randn(2)) for _ in range(999)]

# Create an array of shape (solutions, objectives) and compute the non-dominated set
objective_values_array = np.vstack([s.obj_value for s in solutions])
mask = paretoset(objective_values_array, sense=["min", "max"])

# Filter the list of solutions, keeping only the non-dominated solutions
efficient_solutions = [solution for (solution, m) in zip(solutions, mask) if m]

贡献

如果您有建议和改进,欢迎您仔细审查代码并提交pull request。您提交的代码必须符合PEP8规范,并且所有测试都必须通过。

贡献者: Kartik

性能

下面的图表显示了计算帕累托集所需的时间。高斯数据在帕累托集中只有少量观测值,而简单形上的均匀分布数据在帕累托集中有所有观测值。

参考文献

  • "天空线操作符"(The Skyline Operator)由Börzsönyi等人介绍,在数据库环境中引入了天空线操作符

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

paretoset-1.2.4.tar.gz (16.4 kB 查看哈希)

上传时间: 源代码

构建分发

paretoset-1.2.4-py3-none-any.whl (18.0 kB 查看哈希)

上传时间: Python 3

由以下机构支持