机器学习和数据科学管道和原语。
项目描述
机器学习和数据科学的流水线和原语。
MLBlocks
- 文档:https://mlbazaar.github.io/MLBlocks
- Github:https://github.com/MLBazaar/MLBlocks
- 许可:MIT
- 开发状态:预alpha
概述
MLBlocks是一个简单的框架,通过简单、通用和统一的接口,无缝地将任何Python库中的工具组合起来,以构建端到端的可调机器学习流水线。
功能包括
- 构建结合Python中任何机器学习库的机器学习流水线。
- 访问一个包含数百个原语和流水线的存储库,这些原语和流水线可用于Python代码编写,由机器学习和领域专家精心策划。
- 提取关于哪些超参数可以调整以及调整范围的可读信息,允许与超参数优化工具(如BTB)的自动化集成。
- 支持复杂的多分支流水线和DAG配置,每个原语可以有无限数量的输入和输出。
- 使用JSON注释轻松保存和加载流水线。
安装
要求
MLBlocks已在Python 3.6, 3.7, 3.8, 3.9, 和 3.10上开发和测试
使用pip
安装
安装MLBlocks最简单和推荐的方法是使用pip
pip install mlblocks
这将从PyPi拉取并安装最新稳定版本。
如果您想从源安装或为项目做出贡献,请阅读贡献指南。
MLPrimitives
为了能够使用,MLBlocks需要一个兼容的原语库。
官方库,需要遵循以下MLBlocks教程,是MLPrimitives,您可以使用此命令安装
pip install mlprimitives
快速入门
以下是使用来自MLPrimitives、scikit-learn和xgboost的原语结合的流水线解决成人人口普查数据集分类问题的简短示例。
import pandas as pd
from mlblocks import MLPipeline
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
dataset = pd.read_csv('http://mlblocks.s3.amazonaws.com/census.csv')
label = dataset.pop('label')
X_train, X_test, y_train, y_test = train_test_split(dataset, label, stratify=label)
primitives = [
'mlprimitives.custom.preprocessing.ClassEncoder',
'mlprimitives.custom.feature_extraction.CategoricalEncoder',
'sklearn.impute.SimpleImputer',
'xgboost.XGBClassifier',
'mlprimitives.custom.preprocessing.ClassDecoder'
]
pipeline = MLPipeline(primitives)
pipeline.fit(X_train, y_train)
predictions = pipeline.predict(X_test)
accuracy_score(y_test, predictions)
接下来是什么?
如果您想了解更多关于如何调整流水线超参数、使用JSON注释保存和加载流水线或构建复杂的多分支流水线的信息,请查看我们的文档网站。
还请务必查看笔记本教程!
引用MLBlocks
如果您在研究中使用了MLBlocks,请考虑引用我们的相关论文。
关于MLBlocks的当前设计和其在麻省理工学院数据到AI实验室的更大项目“机器学习集市”中的使用,请参阅
Micah J. Smith,Carles Sala,James Max Kanter和Kalyan Veeramachaneni。 "机器学习集市:利用机器学习生态系统进行有效系统开发。" arXiv预印本1905.08942. 2019。
@article{smith2019mlbazaar,
author = {Smith, Micah J. and Sala, Carles and Kanter, James Max and Veeramachaneni, Kalyan},
title = {The Machine Learning Bazaar: Harnessing the ML Ecosystem for Effective System Development},
journal = {arXiv e-prints},
year = {2019},
eid = {arXiv:1905.08942},
pages = {arXiv:1905.08942},
archivePrefix = {arXiv},
eprint = {1905.08942},
}
有关2015年的第一个MLBlocks版本,该版本仅适用于多表、多实体的时序数据,请参阅Bryan Collazo的论文。
- 机器学习模块. Bryan Collazo. 硕士论文,MIT EECS,2015。
随着众多库和工具的近期可用性,我们决定将它们集成并扩展库以支持其他数据类型:图像、文本、图、时间序列,并与深度学习库集成。
变更日志
0.6.1 - 2023-09-26
- 将 Python 3.11 添加到 MLBlocks - 问题 #143 由 @sarahmish 提出
0.6.0 - 2023-04-14
- 支持 Python 3.9 和 3.10 - 问题 #141 由 @sarahmish 提出
0.5.0 - 2023-01-22
- 更新
numpy
依赖项并隔离测试 - 问题 #139 由 @sarahmish 提出
0.4.1 - 2021-10-08
0.4.0 - 2021-01-09
- 在最后一个模块后停止管道拟合 - 问题 #131 由 @sarahmish 提出
- 添加内存调试和性能分析 - 问题 #130 由 @pvk-developer 提出
- 更新 Python 支持 - 问题 #129 由 @csala 提出
- 获取每个模块的执行时间 - 问题 #127 由 @sarahmish 提出
- 允许直接从 JSON 路径加载原始模块或管道 - 问题 #114 由 @csala 提出
- 管道图 - 问题 #113 由 @erica-chiu 提出
- 获取管道输入 - 问题 #112 由 @erica-chiu 提出
0.3.4 - 2019-11-01
0.3.3 - 2019-09-09
- 改进中间输出管理 - 问题 #105 由 @csala 提出
0.3.2 - 2019-08-12
- 允许将 fit 和 produce 参数作为
init_params
传递 - 问题 #96 由 @csala 提出 - 支持可选的 fit 和 produce 参数及其默认值 - 问题 #95 由 @csala 提出
- 将原始模块与其超参数字典隔离 - 问题 #94 由 @csala 提出
- 添加功能以探索可用的原始模块和管道 - 问题 #90 由 @csala 提出
- 添加原始模块缓存 - 问题 #22 由 @csala 提出
0.3.1 - 管道发现
- 支持扁平化超参数字典 - 问题 #92 由 @csala 提出
- 按名称加载管道并将它们注册为
entry_points
- 问题 #88 由 @csala 提出 - 实现部分重新拟合 -问题 #61 由 @csala 提出
- 将参数解析移至 MLBlock - 问题 #86 由 @csala 提出
- 允许获取中间输出 - 问题 #58 由 @csala 提出
0.3.0 - 新的原始模块发现
- 基于
entry_points
的新原始模块发现系统。 - 在 MLBlock 初始化中进行条件超参数过滤。
- 改进日志记录和异常报告。
0.2.4 - 新的数据集和单元测试
- 添加一个新的多表数据集。
- 添加单元测试,覆盖率高达 50%。
- 改进文档。
- 修复新闻组数据集中的小错误。
0.2.3 - 示例数据集
- 添加数据集类的新的方法。
- 为数据集模块添加文档。
0.2.2 - MLPipeline 加载/保存
- 实现 MLPipelines 的保存和加载方法
- 添加更多数据集
0.2.1 - 新文档
- 添加带有演示数据下载功能的 mlblocks.datasets 模块。
- 全面文档,包括多个管道示例。
0.2.0 - 新 MLBlocks API
新的 MLBlocks API 和原始格式。
以下是更改的摘要
- 原始 JSONs 和 Python 代码已移动到名为 MLPrimitives 的不同存储库。
- 可选使用多个 JSON 原始文件夹。
- JSON 格式已更改,以允许更多灵活性和功能。
- 可以为每个方法指定输入和输出参数,以及参数类型。
- 支持作为原始数据类和函数。
- 完全支持多类型和条件超参数。
- 引入数据模态和原始分类器。
- 添加了文档、描述和作者字段的元数据。
- 移除了解析器,现在 MLBlock 类负责加载和读取 JSON 原始数据。
- 在同一个管道中支持相同原始数据的多个块。
- 允许管道和块有任意输入和输出。
- 管道执行期间的共享变量,可由多个块使用。
0.1.9 - 错误修复发布
- 禁用一些与某些类型图不兼容的 NetworkX 函数。
0.1.8 - 新原始数据和一些改进
- 改进 NetworkX 原始数据。
- 添加字符串向量和日期时间特征化原始数据。
- 重构一些 Keras 原始数据以与单个维度的
y
数组兼容,并兼容pickle
。 - 添加 XGBClassifier 和 XGBRegressor 原始数据。
- 添加一些
keras.applications
预训练网络作为预处理原始数据。 - 添加辅助类以允许函数原始数据。
0.1.7 - 嵌套超参数字典
- 支持以嵌套字典的形式传递超参数。
0.1.6 - 文本和图管道
- 添加 LSTM 分类器和回归器原始数据。
- 添加 OneHotEncoder 和 MultiLabelEncoder 原始数据。
- 添加几个 NetworkX 图特征化原始数据。
- 添加
community.best_partition
原始数据。
0.1.5 - 协同过滤管道
- 添加 LightFM 原始数据。
0.1.4 - 图像管道改进
- 在创建
MLPipeline
时允许传递init_params
。 - 修复 MLHyperparam 类型与 Keras 的错误。
- 将
produce_params
重命名为predict_params
。 - 添加 SingleCNN 分类器和回归器原始数据。
- 简化并改进了平凡的预测器。
0.1.3 - 多表格管道改进
- 改进 RandomForest 原始数据范围。
- 改进 DFS 原始数据。
- 添加基于树的特征选择原始数据。
- 修复 TrivialPredictor 中的错误。
- 改进文档。
0.1.2 - 错误修复发布
- 修复 TrivialMedianPredictor 中的错误。
- 修复 OneHotLabelEncoder 中的错误。
0.1.1 - 单表格管道改进
- 新的项目结构和原始数据,以便集成到 MIT-TA2。
- MIT-TA2 默认管道和单表格管道完全正常工作。
0.1.0
- 在 PyPI 上的第一个版本。
项目详情
下载文件
下载适用于您平台的应用文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码分发
构建分发
mlblocks-0.6.1.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8a67ea025858cc8c317c31d14aa558872f2a2bc233c4e94ae353e7a90e589737 |
|
MD5 | 491daf6eba24bae9ea1bb72cdfd04ab1 |
|
BLAKE2b-256 | f71344962c047cc6bb022ae23a0b6566da2a5ee06599e2fb26d2ece5843aa9c0 |
mlblocks-0.6.1-py2.py3-none-any.whl 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 176a5c17dea315342510822026a48a90584a4f39773ba6df989d0bee7b40f801 |
|
MD5 | bb16cf374766a6a69abcf846a1e7e9f1 |
|
BLAKE2b-256 | 5b502523eeb6552941fef61f087ec0896ae0364c9a0db062a8dcfc2c97af3499 |