今日的示例代码包含2个部分
- notebook文件夹内的ipynb文件,介绍下今天的思路
- 项目文件夹中其他部分:拆分后的信贷项目,学习下如何拆分的,未来你看到的很多大项目都是类似的拆分方法
知识点回顾
- 规范的文件命名
- 规范的文件夹管理
- 机器学习项目的拆分
- 编码格式和类型注解
**作业:**尝试针对之前的心脏病项目ipynb,将他按照今天的示例项目整理成规范的形式,思考下哪些部分可以未来复用。
大型项目拆分核心原则:模块化、低耦合、高内聚,信贷项目典型拆分方式:
credit_project/
├── data/ # 数据相关
│ ├── raw/ # 原始数据
│ ├── processed/ # 清洗后数据
│ └── data_loader.py # 数据加载工具
├── model/ # 模型相关
│ ├── base_model.py # 基础模型类
│ ├── classifier.py # 分类模型实现
│ └── trainer.py # 模型训练逻辑
├── utils/ # 通用工具
│ ├── metrics.py # 评估指标
│ └── tools.py # 辅助函数
├── config.py # 配置参数
└── main.py # 主程序入口
规范要点
-
文件命名 :全小写 + 下划线(snake_case),如
data_loader.py -
编码格式:UTF-8,避免中文乱码
-
类型注解:明确函数参数和返回值类型,提升可读性
from typing import List, Tuple, Optional
def calculate_credit_score(features: List[float], weights: Optional[List[float]] = None) -> float:
"""计算信贷评分"""
if not weights:
weights = [0.5] * len(features)
return sum(f * w for f, w in zip(features, weights))def split_data(data: List[Tuple[float, int]], test_size: float = 0.2) -> Tuple[List[Tuple[float, int]], List[Tuple[float, int]]]:
"""拆分训练集和测试集"""
split_idx = int(len(data) * (1 - test_size))
return data[:split_idx], data[split_idx:]
@浙大疏锦行