DAY31:文件的规范拆分和写法
恩师@浙大疏锦行
知识点:
- 规范的文件命名
- 规范的文件夹管理
- 机器学习项目的拆分
- 编码格式和类型注解
一、机器学习项目流程:
1、数据加载:从文件、数据库、API 等获取原始数据。
- 命名参考:`load_data.py` 、`data_loader.py`
2、数据探索与可视化:了解数据特性,初期可用 Jupyter Notebook,成熟后固化绘图函数。
- 命名参考:`eda.py` 、`visualization_utils.py`
3、数据预处理:处理缺失值、异常值,进行标准化、归一化、编码等操作。
- 命名参考:`preprocess.py` 、`data_cleaning.py` 、`data_transformation.py`
4、特征工程:创建新特征,选择、优化现有特征。
- 命名参考:`feature_engineering.py`
5、模型训练:构建模型架构,设置超参数并训练,保存模型。
- 命名参考:`model.py` 、`train.py`
6、模型评估:用合适指标评估模型在测试集上的性能,生成报告。
- 命名参考:`evaluate.py`
7、模型预测:用训练好的模型对新数据预测。
- 命名参考:`predict.py` 、`inference.py`
二、文件的组织
1、项目核心代码组织:
src/:存放项目的核心代码
src/data/:存放与数据相关的代码
src/models/:关于模型的代码
src/utils/:存放通用辅助代码
2、配置文件管理
config/目录
3、实验与探索代码
notebooks/或experiments/
4、项目产出物管理
data/:存放项目相关数据
models/:存放训练好的模型
reports/或output/:存储项目运行的报告文件/输出文件
三、编码格式和类型注解
1、编码格式
(1)编码声明必须出现在文件的前两行(通常是首行),否则会被忽略。
(2)如果编码格式没问题,可能是vscode的编码格式不是utf-8,可以尝试修改编码格式。
(3)常见的编码报错是因为字符串编码问题,可以尝试显式转化,即读取的时候转化为utf-8编码。
2、类型注解
def 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