当前位置: 首页 > news >正文

Day31:文件的规范拆分与写法

机器学习的项目流程

典型的ML/DL项目通常包含以下几个阶段:

  • 数据加载:从文件、数据库、API等获取原始数据

  • 数据探索与可视化:了解数据特性、初期可使用Jupyter Nootebook,成熟后固化绘图函数。

  • 数据预处理:处理异常值、缺失值,并进行归一化、标准化、编码等操作。

  • 特征工程:创建新特征,选择、优化现有特征。

  • 模型训练:构建模型架构,设置超参数并训练,保存模型。

  • 模型评估:用合适的指标评估模型在测试集上的性能并生成报告。

  • 模型预测:用训练好的模型对新数据进行预测。

文件组织

1. 项目核心代码组织
  • src/(source的缩写):存放项目的核心源代码。按照机器学习项目阶段进一步细分:
    • src/data/:放置与数据相关的代码。
      • src/data/load_data.py:负责从各类数据源(如文件系统、数据库、API 等)读取原始数据。
      • src/data/preprocess.py:进行数据清洗(处理缺失值、异常值)、数据转换(标准化、归一化、编码等)操作。
      • src/data/feature_engineering.py:根据业务和数据特点,创建新特征或对现有特征进行选择、优化。
    • src/models/:关于模型的代码。
      • src/models/model.py:定义模型架构,比如神经网络结构、机器学习算法模型设定等。
      • src/models/train.py:设置模型超参数,并执行训练过程,保存训练好的模型。
      • src/models/evaluate.py:使用合适的评估指标(如准确率、召回率、均方误差等),在测试集上评估模型性能,生成评估报告。
      • src/models/predict.pysrc/models/inference.py:利用训练好的模型对新数据进行预测。
    • src/utils/:存放通用辅助函数代码,可进一步细分:
      • src/utils/io_utils.py:包含文件读写相关帮助函数,比如读取特定格式文件、保存数据到文件等。
      • src/utils/logging_utils.py:实现日志记录功能,方便记录项目运行过程中的信息,便于调试和监控。
      • src/utils/math_utils.py:特定的数值计算函数,像自定义的矩阵运算、统计计算等。
      • src/utils/plotting_utils.py:绘图工具函数,用于生成数据可视化图表(如绘制损失函数变化曲线、特征分布直方图等 )。
2. 配置文件管理
  • config/ 目录:集中存放项目的配置文件,方便管理和切换不同环境(开发、测试、生产)的配置。
    • config/config.pyconfig/settings.py:以 Python 代码形式定义配置参数。
    • config/config.yamlconfig/config.json:采用 YAML 或 JSON 格式,清晰列出文件路径、模型超参数、随机种子、API 密钥等可配置参数。
    • .env 文件:通常放在项目根目录,用于存储敏感信息(如数据库密码、API 密钥等),在代码中通过环境变量的方式读取,一般会被 .gitignore 忽略,防止敏感信息泄露。
3. 实验与探索代码
  • notebooks/ 或 experiments/ 目录:用于初期的数据探索、快速实验、模型原型验证。

    • notebooks/initial_eda.ipynb:在项目初期,使用 Jupyter Notebook 进行数据探索与可视化,了解数据特性,分析数据分布、相关性等。
    • experiments/model_experimentation.py:编写脚本对不同模型架构、超参数组合进行快速实验,对比实验结果,寻找最优模型设置。

    这部分往往是最开始的探索阶段,后面跑通了后拆分成了完整的项目,留作纪念用。

4. 项目产出物管理
  • data/ 目录:存放项目相关数据。
    • data/raw/:放置从外部获取的未经处理的原始数据,保持数据原始状态。
    • data/processed/:存放经过预处理(清洗、转换、特征工程等操作)后的数据,供模型训练和评估使用。
    • data/interim/:(可选)保存中间处理结果,比如数据清洗过程中生成的临时文件、特征工程中间步骤产生的数据等。
  • models/ 目录:专门存放训练好的模型文件,根据模型保存格式不同,可能是 .pkl(Python pickle 格式,常用于保存 sklearn 模型 )、.h5(常用于保存 Keras 模型 )、.joblib 等。
  • reports/ 或 output/ 目录:存储项目运行产生的各类报告和输出文件。
    • reports/evaluation_report.txt:记录模型评估的详细结果,包括各项评估指标数值、模型性能分析等。
    • reports/visualizations/:存放数据可视化图片,如损失函数收敛图、预测结果对比图等。
    • output/logs/:保存项目运行日志文件,记录项目从开始到结束过程中的关键信息,如训练开始时间、训练过程中的损失值变化、预测时间等。

总结一下通用的拆分起步思路:

  1. 首先,按照机器学习的主要工作流程(数据处理、训练、评估等)将代码分离到不同的 .py 文件中。 这是最基本也是最有价值的一步。
  2. 然后,创建一个 utils.py 来存放通用的辅助函数。
  3. 考虑将所有配置参数集中到一个 config.py 文件中。
  4. 为你的数据和模型产出物创建专门的顶层目录,如 data/models/,将它们与你的源代码(通常放在 src/ 目录)分开。

当遵循这些通用的拆分思路和原则时,项目结构自然会变得清晰。

@浙大疏锦行

http://www.dtcms.com/a/314507.html

相关文章:

  • 三维模型轻量化双杀技:GISBox的纹理压缩与顶点压缩联合
  • 交叉验证:原理、作用与在机器学习流程中的位置
  • 【笔记】ROS1|1 ROS基本命令介绍及创建工作空间与功能包【旧文转载】
  • 从知识管理到智能协作:Gitee Wiki如何重塑软件研发效率范式
  • AI聊天:虚拟主播的角色提示词
  • HTTPS有哪些优点
  • LLM嵌入特征工程
  • Coze Studio 概览(七)--记忆管理功能
  • 单调栈|图
  • 电脑上不了网怎么办?【图文详解】wifi有网络但是电脑连不上网?网络设置
  • 【C++】——类和对象(下)
  • SpringBoot3.x入门到精通系列:3.3 整合 Elasticsearch 详解
  • Oracle EBS ERP接口开发 — 修复bug基本流程
  • 《人形机器人的觉醒:技术革命与碳基未来》——类人关节设计:气动人工肌肉PAM及其对材料技术要求与限制
  • 安装MySQL可视化管理工具DBeaver教程
  • Armoury Crate无法通过BIOS卸载
  • 微信小程序本地存储与Cookie的区别
  • 华为OD机考2025C卷 - 开源项目热度榜单 (Java Python JS C++ C )
  • Java反射的Field
  • 消息系统技术文档
  • 抽像代数概念理解——陪集(coset)
  • 华为2288H V5服务器闪红灯 无法开机案例
  • SpringBoot整合t-io是websocket实时通信
  • 题单【排序】
  • linux中 多进程 导致cuda错误的问题解决
  • 【测试】⾃动化测试常⽤函数
  • 配置Mybatis环境
  • 向量魔法:Embedding如何赋能大模型理解世界
  • 靶场(二十八)---小白心得靶场体会---Mantis
  • 嵌入式开发学习———Linux环境下IO进程线程学习(三)