跳转到主要内容

轻量级、协作型数据科学项目的核心功能

项目描述

PyPI Shield Tests codecov Shield

ballet

一个通过特征工程进行协作、开源数据科学项目的 轻量级 框架。

概述

你开发机器学习模型吗?你是单独工作还是作为团队工作?你共享笔记本还是将代码提交到共享仓库?与像Linux内核、Rails框架、Firefox、GNU或Tensorflow这样的成功、大规模协作、开源项目相比,大多数数据科学项目都是由少数人开发的。但想象一下,开源社区能否利用其独创性和决心,通过协作开发数据科学项目来预测人群中的疾病发病率,预测脆弱的儿童是否会从家中被驱逐,或预测学习者是否会退出在线课程。

我们的愿景是通过使其更像开源软件开发,使协作数据科学成为可能。我们的方法是将数据科学流程分解为可以智能组合的模块化补丁,代表“特征定义”、“标注函数”或“预测任务定义”等对象。合作者在并行编写补丁并将其提交到仓库。核心的Ballet框架提供了合并高质量贡献、从文件系统收集模块并将接受的贡献组合成一个单一产品的底层功能。它还提供了Assemblé,这是一个基于笔记本的开发体验,对数据科学家和其他没有经验的开源贡献者友好。我们不需要比在开源软件开发中通常使用的计算基础设施更多的东西。

目前,Ballet专注于支持协作开发特征工程管道,这是许多数据科学项目的重要组成部分。单个特征定义表示为独立的Python模块,声明它们操作的dataframe子集以及从原始数据中提取特征值的scikit-learn风格的learned transformer。Ballet收集单个特征定义并将它们组合成特征工程管道。在任何时候,基于Ballet构建的项目都可以用于相同问题的新的数据实例的端到端特征工程。我们如何确保特征工程管道始终有用?Ballet使用广泛的测试套件和一种新颖的流特征定义选择算法,对提出的特征定义进行彻底的验证,以确保正确性和机器学习性能。接受的特性定义可以由Ballet Bot自动合并到项目中。

Ballet Feature Lifecycle

下一步

你是数据所有者或项目维护者,想要组织协作吗?

👉 查看Ballet维护者指南

你是数据科学家或爱好者,想要加入协作吗?

👉 查看Ballet贡献者指南

想了解Ballet如何实现更好的特征工程™️吗?

👉 查看特征工程指南

想查看一个正在进行的演示协作,甚至可能自己参与其中吗?

👉 查看ballet-predict-house-prices项目

源代码组织

这是对Ballet核心源代码组织的简要概述。有关为Ballet核心本身做出贡献的更多信息,请参阅

路径 描述
cli.py ballet命令行工具
client.py 用户交互客户端
contrib.py 从文件系统中的源文件收集单个模块的特征定义
eng/base.py 特征定义中使用的转换器抽象,例如BaseTransformer
eng/{misc,missing,ts}.py 用于缺失数据、时间序列问题等的自定义转换器
eng/external.py 重新导出来自scikit-learn和feature_engine等外部库的转换器
feature.py Feature抽象
pipeline.py FeatureEngineeringPipeline抽象
project.py 特定Ballet项目与Ballet核心库之间的接口,例如加载特定项目信息的实用程序和Project抽象
templates/ 创建新Ballet项目或创建新特征定义的cookiecutter模板
templating.py 模板之上的用户界面功能
transformer.py 包装转换器,以便它们在管道中协同工作
update.py 从新上游版本更新项目模板的功能
util/ 各种实用程序
validation/main.py 所有验证例程的入口点
validation/base.py 在验证中使用的抽象,例如 FeaturePerformanceEvaluator
validation/common.py 验证中使用的通用功能,例如收集当前环境和参考环境(如拉取请求与默认分支)之间的相关更改的能力
validation/entropy.py 在特征定义选择算法中使用的统计估计例程,例如熵、互信息和条件互信息的估计器
validation/feature_acceptance/ 特征接受验证例程
validation/feature_pruning/ 特征剪枝验证例程
validation/feature_api/ 特征API验证例程
validation/project_structure/ 项目结构验证例程

历史

0.19.5 (2021-07-17)

  • 修复了 ballet.pipeline.FeatureEngineeringPipeline 的 deepcopying 错误

0.19.4 (2021-07-17)

  • 修复了 ballet.eng.base.SubsetTransformer 的 deepcopying 错误(#90
  • 添加了 ballet.drop_missing_targets 原语

0.19.3 (2021-06-28)

  • 支持发现和特征性能评估中的缺失目标(#89
  • ballet.discovery.discover 中的摘要统计信息添加 ninputs

0.19.2 (2021-06-21)

  • 在存在许多重复值的情况下改进离散列检测
  • ballet.discovery.discover 中的摘要统计信息添加 ncontinuousndiscrete

0.19.1 (2021-06-20)

  • 延迟计算 ballet.discovery.discover 中的一些昂贵的摘要统计信息

0.19.0 (2021-06-16)

  • 支持将可调用的对象用作特征输入(#88

0.18.0 (2021-06-06)

  • 添加了用户指南
  • 可以与 MLBlocks 一起使用 Ballet 进行特征工程,然后使用额外的预处理和 ML 组件(#86
  • 可以将提取的特征矩阵包装在具有从 feature.outputfeature.name 导出的命名列的数据框中
  • 实现了 ballet.encoder.EncoderPipeline 以(主要)反映 ballet.pipeline.FeatureEngineeringPipeline
  • 通过 CLI 中的 --train-dir path/to/train/dir 指定用于拟合管道的数据集

0.17.0 (2021-05-24)

  • 支持嵌套转换器,包括嵌套特征以及用 SubsetTransformers 包装的输入/转换器元组(#82
  • 允许 Client.discover 在无法加载数据集或特征产生错误时跳过摘要统计信息

0.16.0 (2021-05-22)

  • 添加了 Client.discover 功能(#80
  • NullFiller 参数的顺序更改为更接近 fillna 签名

0.15.2 (2021-05-14)

  • VarianceThresholdAccepter 中按列操作,而不是计算整个特征组的方差。

0.15.1 (2021-05-12)

  • 为新的接受者添加调试日志

0.15.0 (2021-05-12)

  • 添加了 VarianceThresholdAccepterMutualInformationAccepterCompoundAccepter(《#76》)

0.14.0 (2021-05-11)

  • 支持在验证中使用保留数据分割(《#75》)
  • 修复了项目中的 CLI 程序名称(《#74》)
  • 修复了在 python REPL 中使用 load_config 时的错误(《#73》)
  • 将外部特征工程原语重新组织到 ballet/eng/external/**.py。导入如 from ballet.eng.external import MyPrimitive 不受影响。

0.13.1 (2021-04-02)

  • 修复了 ballet update-project-template 中的升级检查,以迁移到已弃用的 PyPI XML-RPC API。

0.13.0 (2021-03-30)

  • 修复了项目模板中的链接

0.12.0 (2021-03-10)

  • 在 quickstart 中自动化创建 GitHub 仓库

0.11.0 (2021-03-04)

  • 允许从本地主题分支运行验证

0.10.0 (2021-02-23)

  • 添加了 Project.version 属性

0.9.0 (2021-02-16)

  • 添加了对通过 ballet start-new-feature --branching 管理分支的支持(默认为启用)
  • 移除了令人困惑的 ballet.project.config 属性
  • 实现 ballet.project.load_config 作为更好的替代方案,并在项目模板的 load_data 中使用它

0.8.2 (2021-02-16)

  • 修复了与 str(t)repr(t) 相关的 DelegatingRobustTransformer 的错误

0.8.1 (2021-02-16)

  • 修复了与 str(t)repr(t) 相关的 SimpleFunctionTransformer 的错误

0.8.0 (2021-02-02)

  • 修复了由于 PyPI API 故障导致检测 Ballet 更新的错误
  • 修复了一些依赖冲突
  • 在项目模板中引用 ballet-assemble
  • 将 feature_engine 升级到 1.0

0.7.11 (2020-09-16)

  • 通过将一些消息移动到 TRACE 级别来减少转换方法日志的冗余
  • ConditionalTransformer 实现 "else" 转换器
  • 改进 GFSSF 迭代日志

0.7.10 (2020-09-08)

  • 修复了不同处理 y_df 和 y 的错误;现在,y_df 将传递给特征工程管道,而 y 将根据适用性传递给特征验证例程。
  • 切换回使用 Gitter

0.7.9 (2020-08-15)

  • 为 FeatureAPICheck 和其他检查添加 give_advice 功能,以便记录如何修复失败的消息
  • 改进 GFSSFAccepter 和 GFSSFPruner 的日志记录
  • 改进 __str__ 实现,从而影响 DelegatingRobustTransformer 和消费者
  • 将默认日志格式更改为 SIMPLE_LOG_FORMAT
  • 各种错误修复和改进

0.7.8 (2020-08-13)

  • 将 CanTransformNewRowsCheck 添加到特征 API 检查中

0.7.7 (2020-08-12)

  • 支持 None 作为 Feature 中的转换器,它将自动转换为 IdentityTransformer
  • 实现 ColumnSelector
  • 更新文档
  • 各种错误修复和改进

0.7.6 (2020-08-12)

  • 从各种库重新导出特征工程原语
  • 在文档中显示类型注解
  • 更新指南
  • 各种错误修复和改进

0.7.5 (2020-08-03)

  • 在 ballet.yml 文件中使验证器参数可配置(例如 GFSSF 算法的 λ_1 和 λ_2)
  • 支持 dynaconf 3.x

0.7.4 (2020-07-22)

  • ballet.util.log.enable 中接受日志记录器名称以及日志记录器实例
  • 更新文档

0.7.3 (2020-07-21)

  • 将具有内置缓存的 load_data 方法添加到项目 API 中
  • 修复 GFSSF 接受者的错误
  • 始终在验证过程中使用编码的目标
  • 各种错误修复和改进

0.7.2 (2020-07-21)

  • 将示例分析笔记本添加到项目模板中
  • 将 binder url/徽章添加到项目模板中
  • 修复启用多个日志记录器的日志记录错误

0.7.1 (2020-07-20)

  • 添加客户端以实现易于交互式使用 (ballet.b)
  • 将 binder 设置添加到项目模板中

0.7 (2020-07-17)

  • 重新设计项目模板:更新项目结构,通过 FeatureEngineeringProject 创建单个 API,使用并添加对 pyinvoke 的支持,重构 build 为 engineer_features,支持 repolockr bot
  • 改进 ballet.project.Project:可以由给定路径升序创建,可以从当前工作目录创建,可以解析任意项目符号,公开项目的 API
  • 在项目更新期间检查并通知 ballet 的新版本(ballet update-project-template
  • 将 ComputedValueTransformer 添加到 ballet.eng
  • 将 stacklog 移至单独的项目并安装它
  • 添加始终接受或始终不接受提交的验证器
  • 添加功能 API 检查以确保特征可以适合和转换单个行
  • 将特征工程指南添加到文档中,并显著扩展贡献者指南
  • 将 bot 安装说明添加到维护者指南中
  • 在整个代码中添加类型注解
  • 停止支持 py35,添加对 py38 的支持
  • 弃用建模代码
  • 各种错误修复和改进

0.6 (2019-11-12)

  • 实现 GFSSF 验证器和随机验证器
  • 改进验证器,并允许在 ballet.yml 中配置验证器
  • 改进项目模板
  • 创建 ballet CLI
  • 错误修复和性能改进

0.5 (2018-10-14)

  • 添加项目模板和 ballet-quickstart 命令
  • 添加项目结构检查和功能 API 检查
  • 实现多阶段验证例程驱动程序

0.4 (2018-09-21)

  • 实现用于多用途建模和评估的 Modeler
  • 更改项目名称

0.3 (2018-04-28)

  • 实现 PullRequestFeatureValidator
  • 添加 util.travisutil.modutilutil.git util 模块

0.2 (2018-04-11)

  • 实现 ArrayLikeEqualityTestingMixin
  • 实现 collect_contrib_features

0.1 (2018-04-08)

  • 首次发布于 PyPI

项目详情


下载文件

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

源分布

ballet-0.19.5.tar.gz (1.1 MB 查看哈希值)

上传时间

构建分布

ballet-0.19.5-py2.py3-none-any.whl (105.8 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者