1. 反欺诈图谱项目初始化与数据目录规划
任务说明
本案例搭建反欺诈图谱项目的初始骨架:创建标准目录结构,并实现一个可复用的配置加载模块。配置采用 YAML 文件,加载后以字典形式提供路径与参数,供后续数据清洗、图谱构建、模型训练等环节统一读取。
目录结构规划
config/:存放config.yaml配置文件data/raw/:原始数据(未处理)data/cleaned/:清洗后数据data/graph/:图谱节点与边数据data/model/:模型训练数据与产物output/:结果输出(报表、图、预测结果)src/:项目源码
依赖
pip install pyyaml
配置文件 config/config.yaml
project:
name: anti_fraud_graph
version: "0.1.0"
paths:
raw: data/raw
cleaned: data/cleaned
graph: data/graph
model: data/model
output: output
params:
random_seed: 42
test_size: 0.2
配置加载模块 src/config_loader.py
import os
import yaml
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def load_config(config_path=None):
"""加载 YAML 配置,返回字典;路径字段转为绝对路径。"""
if config_path is None:
config_path = os.path.join(BASE_DIR, "config", "config.yaml")
with open(config_path, "r", encoding="utf-8") as f:
cfg = yaml.safe_load(f)
for key, rel in cfg.get("paths", {}).items():
cfg["paths"][key] = os.path.join(BASE_DIR, rel)
return cfg
def ensure_dirs(cfg):
"""根据配置创建所有数据目录。"""
for path in cfg["paths"].values():
os.makedirs(path, exist_ok=True)
if __name__ == "__main__":
cfg = load_config()
ensure_dirs(cfg)
print("project:", cfg["project"]["name"])
for k, v in cfg["paths"].items():
print(f"{k:8s} -> {v}")
运行与验证
python src/config_loader.py
预期输出(路径前缀为项目根目录的绝对路径):
project: anti_fraud_graph
raw -> .../data/raw
cleaned -> .../data/cleaned
graph -> .../data/graph
model -> .../data/model
output -> .../output
通过条件:脚本无报错退出,且 data/ 下四个子目录与 output/ 均被创建。后续模块只需 from src.config_loader import load_config 即可获得统一路径与参数。