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 即可获得统一路径与参数。