数据科学训练笔记
1 项目结构
- 各种数据源获取数据
- 数据处理
- 储存
└── root # 根目录
├─ data_pipeline.py # 数据处理的实际流程;如用notebook编程则是data_pipeline.ipynb
├─ data_source.py # 从各种数据源获取数据,整理成通用的数据格式
├─ data_save.py # 数据储存
├─ db.py # 与数据库进行交互的代码
├─ utils.py # 通用的函数,有可能被各文件引用;例如数据结构转化
└─ main.py # 主文件,调用所有函数/功能,执行代码流程
简单数据计算
简单数据计算
└── data_cal # 根目录
├─ data_process/* # 获取/处理数据的逻辑放在这里
├─ data_cache/* # 临时数据文件/处理好的数据放在这里
├─ db/* # 与数据库交互的代码
├─ main.py # 启动文件,调用以上所有功能性代码,专注于数据处理流程编写;用notebook编程可以是main.ipynb
└─ requirements.txt # 注明项目运行需要哪些库
传统机器学习项目
└──ml_project # 根目录
├── config/* # 配置文件
├── data/* # 与数据有关的代码都放在这里
│ ├── data_pipeline/* # 对数据处理的代码
│ ├── feat_construct/* # 对处理好的数据构造特征
├── data_cache/* # 处理好的数据/临时的数据文件放在这个路径下
├── db/* # 数据库交互逻辑
├── log/* # 存放日志以及定义logger类
├── model/* # 与模型有关的代码
│ ├── model_construct/* # 构建模型类的代码,如果使用已有框架例如sklearn,可以考虑和model_train文件合并
│ ├── model_serve/* # 使用模型进行预测,并对结果储存至数据库;另附有对目标数据库表检测及建表的逻辑
│ ├── model_train/* # 对模型进行训练,并按要求储存模型文件,删除过期的模型文件;视情况可以和model_constuce文件合并
├── utils/* # 通用的功能性代码,例如将一个list转化为多个特定的数据结构;utils里的函数有可能会被各种代码文件调用
├── main.py # 对所有函数/功能进行调用的主文件
└── requirements.txt # 注明项目运行需要哪些库
深度学习项目
└── dl_project # 根目录
├─ checkpoints/* # 存放模型训练的checkpoints和计算图文件
├─ data_pipeline/* # 获取/处理数据的逻辑放在这里
├─ data_cache/* # 临时数据文件/处理好的数据放在这里
├─ model/* # 构建模型类/存放历史版本的模型文件
├─ db/* # 与数据库交互的代码
├─ config/* # 配置文件;例如模型超参,数据存放路径
├─ embedding/* # 训练得到的embedding
├─ test/* # 测试用例
├─ main.py # 启动文件,调用以上所有功能性代码,专注于项目流程逻辑编写
└─ requirements.txt # 注明项目运行需要哪些库
部署模型接口
└──ml_api # 根目录
├── api/* # 构造web接口,将定义方法挂载在相应的router上
├── config/* # 配置文件
├── core/* # 各接口核心的逻辑代码
│ ├── api_one_method/* # 第一个接口的逻辑
│ ├── api_two_method/* # 第二个接口的逻辑
│ ├── middlerware.py # 中间件
│ ├── router.py # 构造路由
├── db/* # 数据库交互逻辑
├── template/* # 一些模板文件
├── log/* # 存放日志以及定义logger类
├── utils/* # 通用的功能性代码
├── requirements.txt # 注明项目运行需要哪些库
├── server.py # 接口服务部署
└── start.sh # 开启服务的脚本文件,包括启用环境等命令
2 类型提示
- 理解代码
- 减少bug
- IDE代码补全
a: int = 1
def func(x: int) -> str:
return x
func(2)
3 熟悉内置库/常用库api
除去os, time等常用内置库外,以下库值得注意
- functools
提供一些高阶操作函数例如reduce
,partial
- itertools
操作迭代对象的函数/类例如chain
,combinations
- collection
提供额外的数据结构例如deque
,defaultdict
4 代码规范
pep8, google, yapf, facebook
缩进 行最大长度79、72
注释
命名规范
函数/类里的方法尽量用动词,类名用驼峰、函数和变量用下划线
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理