计算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 查看哈希)
关闭
paretoset-1.2.4.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 90c49976f15397a47c06217bcd849d6b8ea37fe8a5fd44ea37f2d8f3672ad05c |
|
MD5 | d1cba017362858ab50c7556aa8c4ef1c |
|
BLAKE2b-256 | cce6055c9dab819bf997f501059bdc29864c193295287cbadfdb3ff02b048c39 |
关闭
paretoset-1.2.4-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ad45c3e9b28b919189b212acba7febc5abee69070f195b466c85bc2c99126538 |
|
MD5 | f735831efa32b08898abc2ca3e99103d |
|
BLAKE2b-256 | ebaba4d0f926e766dfcd0073d1091a84e998a1bf9f85c6cd98c45086cc931b38 |