如何管理和组织一个机器学习项目(上)

简介: 如何管理和组织一个机器学习项目

本文主要分享一些组织管理机器学习项目的践经验

640.png

Python

Python 是机器学习项目开发的主要使用语言之一。它包含了大量的库/包可以用于机器学习:

  • numpy:适用于多维数组、数值计算。常用于数据处理。
  • pandas:数据分析常用库。pandas dataframes本质上是numpy数组,它用描述性字符串作为行和列标签。数据在pandas dataframes里可以很容易进行排序、过滤、分组、连接等操作,这对数据处理很有用。
  • PyTorch:用于构建神经网络。包括许多预训练模型和计算机视觉数据集。Pytorch鼓励使用面向对象的编程,用Pytorch编写代码很快,而且Pytorch默认支持快速执行,因此可以与Python调试器一起使用。
  • TensorFlow:在工业上更受欢迎的Pytorch的替代品。Pytorch更适合做研究。如果您想使用TensorFlow,并且想要一个更高级别的接口,那么可以使用Keras。
  • scikit-learn:这是一个很好的库,用于回归、支持向量机、k近邻、随机森林、计算混淆矩阵等。
  • matplotlib、seaborn:用于数据可视化的常用库之一。

Git

Git版本控制对于机器学习项目的组织管理非常有用。

Git是一种可以用来跟踪对代码所做的所有更改的工具。Git“repository”是一个包含代码文件的目录。Git使用节省存储空间的技术,因此它不存储代码的多个副本,而是存储旧文件和新文件之间的相对更改。Git有助于保持代码文件目录的整洁和组织,因为只有最新版本才显示存在(尽管您可以随时轻松访问代码的任何版本)。使用者可以选择发生的更改,使用“commit”将代码的特定更改与相关的书面描述捆绑在一起。Git存储库也使共享代码和协作变得更加容易。总的来说,比起保存“myscript_v1.py”、“dataprocessing_v56.py”、“utils_73.py”等上百万个不同版本的代码,Git是一个更好的方法来保存旧代码。

Git版本控制可以通过GitHub、GitLab和Bitbucket来实现。我最常使用GitHub。

640.png

使用GitHub的方法如下:

  1. 安装Git:https://git-scm.com/downloads
  2. 注册一个GitHub账户:www.github.com
  3. 通过SSH链接个人GitHub账户和个人电脑。以便于随时能够将代码上传并保存在云端。
  4. 单击概要文件的“Repositories”部分中的绿色“new”按钮,在GitHub上创建一个新的存储库。
  5. 使个人计算机能够将代码推送到该存储库(以下是示例命令):
echo"# pytorch-computer-vision">>README.mdgitinitgitaddREADME.mdgitcommit-m"first commit"gitbranch-Mmastergitremoteaddoriginhttps://github.com/rachellea/pytorch-computer-vision.gitgitpush-uoriginmaster

假设现在myeditedscript.py有代码做出了更改,可以通过commit进行版本管理:

gitaddmyeditedscript.pygitcommit-m'added super useful functionality'gitpushoriginmaster

Anaconda

Anaconda支持创建不同的环境,这些环境可能包含不同的Python版本和不同的包版本。当我们在处理多个具有冲突依赖关系的项目时,Anaconda特别有用。

使用Anaconda很简单:

首先,安装Anaconda: https://docs.anaconda.com/anaconda/install/

然后,创建环境。用所在的项目来命名环境是比较好的。例如,如果该项目是关于使用神经网络进行胸部x光分类的,则该环境可以称为chestxraynn:

condacreate--namechestxraynnpython=3.5

请注意,避免在环境名称周围加引号,否则引号字符本身将是环境名称的一部分。此外,可以选择任何版本的Python。它不一定是python3.5。

一旦环境被创建,就是激活环境的时候了。“激活”仅仅意味着你将被“放入环境中”,这样你就可以使用安装在里面的所有软件。Windows激活命令如下:

activatechestxraynn

Linux/macOS激活命令如下:

sourceactivatechestxraynn

使用“conda install”命令在环境中安装包。以安装matplotlib为例:

condainstall-cconda-forgematplotlib

从技术上讲,在conda环境中,也可以使用pip安装包,但这可能会导致问题,因此应尽量避免。

Anaconda将负责确保环境中所有内容的版本都是兼容的。更多命令见Conda Cheat Sheet。

也可以直接使用别人的命令文件创建conda环境。在GitHub中https://github.com/rachellea/pytorch-computer-vision, 有一个tutorial_environment.yml文件,此文件指定运行教程代码所需的依赖项。要基于此文件创建conda环境,只需在Anaconda提示符中运行以下命令:

condaenvcreate-ftutorial_environment.yml

代码管理:类和函数

代码管理非常重要。当数千行的代码,没有文件说明,中间到处都是重复的代码块,一些代码块没有解释就注释掉了,还有各种奇怪的变量名,这简直就是一场灾难。

而Pytorch实现中通常看到的所有代码都是有组织的,并且有很好的说明记录。

从长远来看,如果为自己的项目编写高质量的代码,将节省大量时间。高质量代码的一个方面是它在模块中的组织和管理。

代码管理建议:

  • 面向对象编程。强烈推荐使用PyTorch机器学习框架,因为它有助于为所有事情使用面向对象的编程。Pytorch中,模型是一个类,数据集也是一个类。
  • 使用函数。如果你写的东西不能作为一个类很好地工作,那么把代码组织成函数。函数是可重用的。

640.png

代码管理示意图

代码管理:目录

使用多个模块来组织代码,并将这些模块组织到目录中。以一个简单的项目为例:

总体组织如下:

  • 一个训练-评估-测试循环模块(src/run_experiment.py)
  • 一个用于计算性能指标的模块(src/evaluate.py)
  • 一个(或多个)用于数据处理的模块(load_dataset/custom-pascal.py、 load_dataset_custom_tiny.py)
  • 一个(或多个)模型模块(models/custom_models_base.py)

640.png

代码管理目录图

请注意,虽然在这个存储库中存储了一个数据集(在“train”、“val”和“test”目录中的png图片),但一般来说,将数据集放入存储库并不是一个好主意。此存储库中存在数据集的唯一原因是,它是为演示目的而创建的小型数据集。除非数据非常小,否则不应将其放入存储库中。

导入文件

请注意,需要在每个子目录中都有一个名为init.py的空文件,以便模块可以从这些目录导入文件。

下面是如何根据彼此所在的目录让一个模块awesomecode.py调用名为helpercode.py的模块:

640.png

目录
相关文章
|
6月前
|
机器学习/深度学习 数据采集 运维
智能运维:利用机器学习优化IT基础设施管理
在数字化浪潮的推动下,企业对IT系统的依赖程度日益加深。传统的运维模式已经难以满足现代业务的需求,尤其是在处理海量数据和复杂系统时显得力不从心。本文将探讨如何通过机器学习技术,实现智能化的运维管理,从而提升效率、减少故障时间,并预测潜在问题,保障业务的连续性和稳定性。 【7月更文挑战第27天】
75 10
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
41 6
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
32 1
|
6月前
|
机器学习/深度学习 运维 监控
智能化运维的崛起:机器学习在IT管理中的实践与挑战
本文深入探讨了智能化运维领域,特别是机器学习技术在IT管理中的应用。文章首先介绍了智能化运维的概念及其重要性,随后详细阐述了机器学习在故障预测、自动化响应和系统优化中的作用。同时,文章也指出了实施智能化运维时可能遇到的技术挑战和数据治理问题,并提出了相应的解决策略。最后,通过具体案例分析,展示了机器学习技术如何在实际运维中提高系统稳定性和效率。
|
6月前
|
机器学习/深度学习 边缘计算 运维
智能化运维的崛起:机器学习在IT基础设施管理中的应用
随着企业对IT基础设施的依赖日益加深,传统的运维模式已难以满足现代业务的需求。本文将探讨智能化运维的概念,分析机器学习技术如何革新IT基础设施的管理方式,提升运维效率,并预测其在未来运维领域的发展趋势。通过具体案例,本文旨在展示智能化运维的实践价值及其对企业数字化转型的推动作用。
71 0
|
2月前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
161 1
|
4月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
163 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
5月前
|
机器学习/深度学习 人工智能 数据处理
【人工智能】项目实践与案例分析:利用机器学习探测外太空中的系外行星
探测外太空中的系外行星是天文学和天体物理学的重要研究领域。随着望远镜观测技术的进步和大数据的积累,科学家们已经能够观测到大量恒星的光度变化,并尝试从中识别出由行星凌日(行星经过恒星前方时遮挡部分光线)引起的微小亮度变化。然而,由于数据量巨大且信号微弱,传统方法难以高效准确地识别所有行星信号。因此,本项目旨在利用机器学习技术,特别是深度学习,从海量的天文观测数据中自动识别和分类系外行星的信号。这要求设计一套高效的数据处理流程、构建适合的机器学习模型,并实现自动化的预测和验证系统。
92 1
【人工智能】项目实践与案例分析:利用机器学习探测外太空中的系外行星
|
5月前
|
机器学习/深度学习 数据处理 定位技术
构建您的首个机器学习项目:从理论到实践
【8月更文挑战第28天】本文旨在为初学者提供一个简明的指南,通过介绍一个基础的机器学习项目——预测房价——来揭示机器学习的神秘面纱。我们将从数据收集开始,逐步深入到数据处理、模型选择、训练和评估等环节。通过实际操作,你将学会如何利用Python及其强大的科学计算库来实现自己的机器学习模型。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你打开一扇通往机器学习世界的大门。
|
5月前
|
机器学习/深度学习 数据可视化 数据处理
Python vs R:机器学习项目中的实用性与生态系统比较
【8月更文第6天】Python 和 R 是数据科学和机器学习领域中最受欢迎的两种编程语言。两者都有各自的优点和适用场景,选择哪种语言取决于项目的具体需求、团队的技能水平以及个人偏好。本文将从实用性和生态系统两个方面进行比较,并提供代码示例来展示这两种语言在典型机器学习任务中的应用。
166 1
下一篇
开通oss服务