轻松管理数据科学项目的源数据、中间数据和结果

dataworkspaces的Python项目详细描述


数据工作区是用于维护 数据科学项目的状态,包括数据集,中间 数据、结果和代码。它通过快照支持可复制性 以及沿袭模型和通过推/拉模型进行的协作 灵感来自于像git这样的源代码控制系统。

数据工作区作为Python3包安装,并提供 类似于git的命令行接口和编程api。具体数据 通过扩展支持科学工具和工作流 称为kits。目标是提供可复制性和协作性 对您当前的项目和流程进行最少的更改会带来好处。

数据工作区运行于 类Unix系统,包括Linux、MacOS和通过 Linux的Windows子系统。

https://travis-ci.org/data-workspaces/data-workspaces-core.svg?branch=master

快速启动

下面是一个简单的示例,使用 scikit-learn 以及运行在Jupyter笔记本上的著名数字数据集。

首先,安装库:

pip install dataworkspaces

现在,我们将创建一个工作区:

mkdir quickstart
cd ./quickstart
dws init --create-resources code,results

这就创建了我们的workspace(这是一个隐藏的git存储库) 用两个子目录初始化它, 一个用于源代码,一个用于结果。这些是特别的 子目录,因为它们是resources可以跟踪和版本化 独立地。

现在,我们要将源数据添加到工作区中。它位于 外部第三方Git存储库。很容易添加:

git clone https://github.com/jfischer/sklearn-digits-dataset.git
dws add git --role=source-data --read-only ./sklearn-digits-dataset

第一行(git clone ...)为 数字数据集。第二行(dws add git ...)将存储库添加到工作区 作为我们项目的一部分。--role选项告诉数据 工作区如何使用资源(作为源数据)和--read-only 选项指示我们应将存储库视为只读,而不要尝试 将其推送到origin(因为您没有^{tt5}的写入权限$ 此存储库的副本)。

现在,我们可以创建一个jupyter笔记本来运行我们的实验:

cd ./code
jupyter notebook

这将在您的浏览器中显示Jupyter应用程序。单击new 下拉列表(在右侧)并选择“Python3”。一旦进入笔记本, 单击当前标题(“无标题”,在顶部,在“jupyter”旁边) 并将标题更改为digits-svc

现在,在第一个单元格中键入以下python代码:

import numpy as np
from os.path import join
from sklearn.svm import SVC
from dataworkspaces.kits.scikit_learn import load_dataset_from_resource,\
                                             train_and_predict_with_cv

RESULTS_DIR='../results'

dataset = load_dataset_from_resource('sklearn-digits-dataset')
train_and_predict_with_cv(SVC, {'gamma':[0.01, 0.001, 0.0001]}, dataset,
                          RESULTS_DIR, random_state=42)

现在,打开牢房。训练和测试 模型。然后您应该看到:

Best params were: {'gamma': 0.001}
accuracy: 0.99
classification report:
              precision    recall  f1-score   support

         0.0       1.00      1.00      1.00        33
         1.0       1.00      1.00      1.00        28
         2.0       1.00      1.00      1.00        33
         3.0       1.00      0.97      0.99        34
         4.0       1.00      1.00      1.00        46
         5.0       0.98      0.98      0.98        47
         6.0       0.97      1.00      0.99        35
         7.0       0.97      0.97      0.97        34
         8.0       1.00      1.00      1.00        30
         9.0       0.97      0.97      0.97        40

   micro avg       0.99      0.99      0.99       360
   macro avg       0.99      0.99      0.99       360
weighted avg       0.99      0.99      0.99       360

Wrote results to results:results.json

现在,您可以保存并关闭笔记本。如果你看看 目录quickstart/results,您应该看到一个results.json 文件中包含有关您跑步的信息。

接下来,让我们创建一个snapshot,它将记录 工作区和保存数据沿袭以及我们的结果:

dws snapshot -m "first run with SVC" SVC-1

SVC-1是快照的标记。 如果您查看quickstart/results,您将看到结果 (当前仅results.json)已移动到子目录 snapshots/HOSTNAME-SVC-1,其中HOSTNAME是 本地机器)。一个文件lineage.json,包含完整的 我们实验的数据沿袭图 在那个目录中创建的。

从这里您可以做一些事情:

  • 运行更多的实验并通过捕捉工作区来保存结果。 如果在某个时候,我们想回到我们的第一个实验,我们可以运行: dws restore SVC-1。这将还原源数据的状态,并 代码子目录,但保留结果的完整历史记录。
  • 在github或任何其他git托管应用程序上上载您的工作区。 这可以是备份副本或与其他人共享。 其他人可以通过dws clone下载。
  • 涉及多步骤数据管道的更复杂的场景可以很容易地 自动化。有关详细信息,请参阅文档。

文档

文件是AV在这里可用:https://data-workspaces-core.readthedocs.io/en/latest/。文档的源位于docs下。要在本地构建它,请安装 Sphinx并运行以下命令:

cd docs
pip install -r requirements.txt # extras needed to build the docs
make html

要查看本地文档,请在 浏览器。

许可证

本代码由马克斯普朗克软件系统和数据研究所(Max Planck Institute for Software Systems and Data Ken)于2018年、2019年版权所有。 研究。它是根据Apache2.0许可证授权的。有关详细信息,请参见文件license.txt。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaFXControlsFX8.0.6对话框java。util。丢失资源异常   java覆盖@CollectionTable   java在BlackBerry中访问internet以执行POST的不同方式   在Spring中为CSS找到java NoHandler   java如何在Google App Engine的应用程序中配置servlet过滤器。yaml文件?   java无法在域模式下创建gc日志   Java:匹配数组元素并删除   java如何使所有按钮在JavaFX浏览器中正常工作?   java如何将admob广告放置在LibGDX视图上方   从java HTTP响应获取正确的类型/编码   保存Java配置信息的最佳位置   java如何从pc将当前日期设置为jDateChooser?   java在数组中多次存储用户输入   java Lein安装/uberjar在尝试将依赖项中的类与genclass一起使用时失败   java从菜单执行SQL语句   java如何将自定义反序列化器Gson中的JsonElement值小写?   java如何在同一页而不是新页上获得响应   如何在Java中生成最小值和最大值之间的随机整数?   从不同类访问Java hashmap   java Hibernate无法从数据库中正确读取对象