文章目录

  • 为什么要采用标准化的项目结构?
  • 用cookiecutter生成更好的项目结构
    • 快速入门
      • 1、安装cookiecutter
      • 2、使用项目工程模板开始一个新项目
      • 3、常用文件说明
  • 数据科学/机器学习可用的Cookiecutter模板
  • 参考链接

为什么要采用标准化的项目结构?

我们常常会遇到这样一类问题:在尝试复现几个月前或者几年以前的数据分析实验时,却发现对自己以前编写的代码感到迷茫,不知道从何开始下手?数据应该如何加载和处理?哪些是中间处理的结果?等等。
良好的项目结构应该能帮助我们更轻松地回到过去的工作的实践,具有如下优点:

  • 将代码、数据等分离,采用标准化的处理流程
  • 采用最佳工程设计实践,如版本控制和docker等工具
  • 提高机器学习、数据分析项目中结果的可重复性
  • 提供用于机器学习项目的最佳目录和文件模板

用cookiecutter生成更好的项目结构

Cookiecutter可以从现有的项目模板创建项目,比如python包项目,可以实现标准化的文件结构,帮助工程的构建和共享分析变得更加容易。

官方文档:https://cookiecutter.readthedocs.io/en/latest/index.html

快速入门

1、安装cookiecutter

pip install cookiecutter

2、使用项目工程模板开始一个新项目

在命令行输入下面代码,可以在python中使用数据科学工作的模板,创建符合逻辑的、合理标准化的、灵活的项目结构。

> cookiecutter https://github.com/drivendata/cookiecutter-data-science

然后输入项目的相关信息,就会在当前路径下自动创建项目。

上述命令会在当前目录生成文件夹,其目录结构如下:

├── LICENSE
├── Makefile           <- Makefile with commands like `make data` or `make train`
├── README.md          <- The top-level README for developers using this project.
├── data
│   ├── external       <- Data from third party sources.
│   ├── interim        <- Intermediate data that has been transformed.
│   ├── processed      <- The final, canonical data sets for modeling.
│   └── raw            <- The original, immutable data dump.
│
├── docs               <- A default Sphinx project; see sphinx-doc.org for details
│
├── models             <- Trained and serialized models, model predictions, or model summaries
│
├── notebooks          <- Jupyter notebooks. Naming convention is a number (for ordering),
│                         the creator's initials, and a short `-` delimited description, e.g.
│                         `1.0-jqp-initial-data-exploration`.
│
├── references         <- Data dictionaries, manuals, and all other explanatory materials.
│
├── reports            <- Generated analysis as HTML, PDF, LaTeX, etc.
│   └── figures        <- Generated graphics and figures to be used in reporting
│
├── requirements.txt   <- The requirements file for reproducing the analysis environment, e.g.
│                         generated with `pip freeze > requirements.txt`
│
├── setup.py           <- Make this project pip installable with `pip install -e`
├── src                <- Source code for use in this project.
│   ├── __init__.py    <- Makes src a Python module
│   │
│   ├── data           <- Scripts to download or generate data
│   │   └── make_dataset.py
│   │
│   ├── features       <- Scripts to turn raw data into features for modeling
│   │   └── build_features.py
│   │
│   ├── models         <- Scripts to train models and then use trained models to make
│   │   │                 predictions
│   │   ├── predict_model.py
│   │   └── train_model.py
│   │
│   └── visualization  <- Scripts to create exploratory and results oriented visualizations
│       └── visualize.py
│
└── tox.ini            <- tox file with settings for running tox; see tox.readthedocs.io

在命令行采用 tree /f >list.txt 命令,就可以把打印出的树状目录结构写入到list.txt文件中了。

3、常用文件说明

  • 通常来说,任何人应该可以仅用src中的代码和data/raw中的数据复现结果。
  • data目录:通常在分析中,需要执行长时间的步骤来预处理数据或训练模型。如果已经执行了这些步骤,可以将输出存储在data/interim 目录等位置,而不必每次都等待重新运行它们。
  • notebooks目录:存放例如jupyter notebooks等工具生成的笔记,对于探索和交流数据分析非常有效。笔记的文件名可以采用类似<step>-<ghuser>-<description>.ipynb的形式 (e.g., 0.3-bull-visualize-distributions.ipynb)。注意:不要编写代码在多个笔记本中执行相同的任务,利用好重构的组件——比如数据预处理任务,则将其放入管道中src/data/make_dataset.py并从中加载数据data/interim。如果有其他的实用代码,将其重构为src。
  • MakeFile 用make管理相互依赖的步骤,从程序的源文件生成程序的可执行文件和其他非源文件。MakeFile基础文档
  • .env 用于保存一些机密数据和配置变量,该文件一般不提交到版本控制存储库中。
  • .gitignore 通过该文件告诉git哪些文件不需要提交到版本控制存储库中。比如包含本地隐私数据的文件、占用存储较大的文件等。
  • requirements.txt 用于保存当前所有的依赖库,采用pip freeze > requirements.txt命令生成。

数据科学/机器学习可用的Cookiecutter模板

  • Cookiecutter Docker Science:用docker容器生成适合简单机器学习任务的初始目录。

  • cookiecutter-reproducible-science:用于开始一个可重复和透明的科学项目,包括数据,模型,分析和报告的cookiecutter模板 (比如你的科学论文)。

  • CookieCutter Pip-Project:用于生成可以pip install安装的项目。

参考链接

http://drivendata.github.io/cookiecutter-data-science/
https://www.cnblogs.com/taceywong/p/10506032.html

用cookiecutter快速构建机器学习项目结构相关推荐

  1. 3-2 Coursera吴恩达《构建机器学习项目》 第二周课程笔记-机器学习策略(2)

    上节课3-1 Coursera吴恩达<构建机器学习项目> 第一周课程笔记-机器学习策略(1)我们主要介绍了一些优化机器学习的策略和方法,包括正交化.评估指标.数据集的划分.贝叶斯错误率和可 ...

  2. SpringBoot2.1.5 (5)---快速构建SpringBoot 项目的两种方式

    快速构建SpringBoot项目的两种方发 一. 通过 http://start.spring.io/ 在线构建 二. 通过IntelliJ IDEA 快速构建 通过 http://start.spr ...

  3. 使用 TensorFlow 构建机器学习项目中文版

    使用 TensorFlow 构建机器学习项目中文版 第 1 章 探索和转换数据 TensorFlow 的主要数据结构 – 张量 处理计算工作流程 – TensorFlow 的数据流程图 运行我们的程序 ...

  4. vue-cli快速构建vue项目和本地模拟请求数据

    Vue-cli快速构建 Vue 项目和本地模拟请求数据 1 前提: 安装了 node.js 首先: 全局安装 vue-cli npm intsall vue-cli -g (-g代表全局安装) 2 使 ...

  5. vue-cli构建SPA项目结构介绍spa完成路由开发及嵌套路由

    目录 一.vue-cli构建SPA项目结构介绍 二.spa完成路由开发 三. 嵌套路由 一.vue-cli构建SPA项目结构介绍 前提:搭建好NodeJS环境    node -v    npm -v ...

  6. 使用dva脚手架(dva-cli)快速构建React项目

    安装 dva-cli 你应该会更希望关注逻辑本身,而不是手动敲入一行行代码来构建初始的项目结构,以及配置开发环境. 那么,首先需要安装的是 dva-cli .dva-cli 是 dva 的命令行工具, ...

  7. 使用maven快速构建SSM项目

    这里我就假设大家都已经配置好Maven,就不在重复说明了.若没有配置可以参考<首次使用maven的配置过程>. 1.新建Maven项目 工作区–右键-new-other–搜索maven 现 ...

  8. 使用 TensorFlow 构建机器学习项目:6~10

    原文:Building Machine Learning Projects with TensorFlow 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文 ...

  9. 吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(2)

            进行误差分析:可进行人工统计或可同时并行评估几个想法.进行误差分析时,你应该找一组错误例子,可能在你的开发集里或者在你的测试集里,观察错误标记的例子,看看假阳性(false posit ...

最新文章

  1. 字节跳动总结的设计模式 PDF 火了,完整版开放下载!
  2. 建行优盾制单重要还是复核重要_注会成绩复核可行吗?纠结要不要申请!
  3. 笔试——查找重复数(杭州某准独角兽)
  4. CentOS6 下Vim安装和配置
  5. 怎么把html表复制到word里,怎么把网页表格复制到word
  6. rabbitmq接口异常函数方法_分布式系统消息中间件——RabbitMQ的使用进阶篇
  7. Nginx跨域解决配置示例
  8. yarn logs -applicationId 无法导出logs日志 Log aggregation has not completed or is not enabled.
  9. [Luogu P2893][USACO08FEB]修路Making the Grade
  10. 计算机控制lc72131,锁相环频率合成器—LC72131.PDF
  11. ios版的chrome如何保存网页为PDF
  12. Python坐标系转换
  13. 计算机无法进去系统,电脑开机后进不了系统的解决方法步骤图
  14. 纯干货:手把手地教你搭建Oracle Sharding数据库分片技术
  15. 入门图形学:雪地特效(一)
  16. R语言 霍尔特指数平滑法(Holt)
  17. [ Azure - Cloud Shell ] 微软 Azure Cloud Shell 介绍
  18. 重磅 | 消灭所有马赛克,谷歌宣布机器学习图像锐化工具RAISR
  19. 三星Galaxy S22、三星Galaxy22+和三星Galaxy22 Ultra区别
  20. 亿图脑图MindMaster思维导图及亿图图示会员-骨折啦

热门文章

  1. @Override must override a superclass method
  2. linux/bsd四大防火墙我们选择谁
  3. 基础学习笔记之opencv(14):随机数发生器绘制文字
  4. Jquery 获取元素内容
  5. 几个重要的Linux系统内核文件介绍
  6. 关闭共享的DOS命令
  7. GARFIELD@03-26-2005
  8. Spring JSF集成
  9. C#LeetCode刷题之#414-第三大的数(Third Maximum Number)
  10. windbg调试windows下的程序