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

python学习day31

文件的规范拆分和写法


今日的示例代码包含2个部分
1.notebook文件夹内的ipynb文件,介绍下今天的思路
2.项目文件夹中其他部分:拆分后的信贷项目,学习下如何拆分的,未来你看到的很多大项目都是类似的拆分方法

知识点回顾
1.规范的文件命名
2.规范的文件夹管理
3.机器学习项目的拆分
4.编码格式和类型注解
机器学习的流程

数据加载:命名参考:load_data.py 、data_loader.py

数据可视化:eda.py 、visualization_utils.py

数据预处理:preprocess.py 、data_cleaning.py 、data_transformation.py

特征工程:feature_engineering.py

模型训练:model.py 、train.py

模型评估:evaluate.py

模型预测:predict.py 、inference.py

文件的组织

1.项目核心代码组织

src/ 核心代码

        src/data/

          src/data/load_data.py 加载原始数据

          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.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.py 或 config/settings.py:以 Python 代码形式定义配置参数。
        config/config.yaml 或 config/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/ 目录)分开。

if name == "main"
常常会看到if name == "main"这个写法,实际上,每个文件都是一个对象,对象就会有属性和方法。如果直接运行这个文件,则__name__等于__main__,若这个文件被其他模块导入,则__name__不等于__main__。

# 变量的类型注解
name: str = "Alice"
age: int = 30
height: float = 1.75
is_student: bool = Falsedef add(a: int, b: int) -> int:return a + bdef greet(name: str) -> None:print(f"Hello, {name}")# 定义一个矩形类
class Rectangle:width: float      
# 矩形宽度(浮点数),类属性的类型注解(不初始化值)height: float     
# 矩形高度(浮点数)def __init__(self, width: float, height: float):self.width = widthself.height = heightdef area(self) -> float:# 计算面积(宽度 × 高度)return self.width * self.height

http://www.xdnf.cn/news/687637.html

相关文章:

  • Linux程序与进程
  • 数据结构:线性表的基本操作与链式表达
  • uni-app学习笔记十五-vue3页面生命周期(二)
  • 数据结构--顺序表
  • Weather app using Django - Python
  • Denoising Autoencoders 视频截图 DAEs简单实现 kaggle 去噪编码器
  • 第二节 LED模块
  • 【普及−】洛谷P1706 全排列问题
  • java每日精进 5.28【幂等性】
  • 2025年05月28日Github流行趋势
  • uniapp-商城-74-shop(7-商品列表,选规格 添加商品到购物车)
  • 前端面试准备-1
  • Linux中的权限概念
  • Java SE Cloneable接口和深/浅拷贝
  • 水域应急救援可视化平台
  • 【前端】Vue3+elementui+ts,TypeScript Promise<string>转string错误解析,习惯性请出DeepSeek来解答
  • 国产SOC有哪些?
  • 即插即用的全新算法改进策略——引导学习策略:一种用于元启发式算法设计和改进的新型更新机制
  • Unity对象池插件Lean Pool学习笔记
  • android 图片背景毛玻璃效果实现
  • Flutter 与 Android 原生布局组件对照表(完整版)
  • TencentOSTiny
  • 【模型显著性分析】配对样本 t 检验
  • 虚拟与现实时空认知同步的核心指标
  • maven中的maven-resources-plugin插件详解
  • 部署LVS-DR群集
  • Docker部署Spark大数据组件:配置log4j日志
  • Vue开发系列——零基础HTML引入 Vue.js 实现页面之间传参
  • Kotlin 中的数据类型有隐式转换吗?为什么?
  • 天津工作机会:技术文档工程师 - 华海清科股份有限公司