欢迎光临
我们一直在努力

Python全栈项目--基于机器学习的金融风险评估系统

一、项目简介

金融机构在处理贷款、分期、授信等业务时,需要快速判断申请人的违约风险。本文实现一个可运行的 Python 全栈项目:基于机器学习的金融风险评估系统。系统支持用户注册登录、JWT 鉴权、申请人金融特征录入、风险评分、风险等级输出、历史评估记录和统计看板。

项目不是单纯讲算法,而是从前端页面、后端接口、数据库模型到部署运行完整串联,适合作为课程设计、毕业设计或全栈项目练习。

二、技术栈

  • 后端:FastAPI、SQLAlchemy、Pydantic、JWT、Passlib
  • 数据库:SQLite
  • 前端:Vue 3 + Vite
  • 鉴权:Bearer Token / JWT
  • 风控模型:轻量机器学习风格特征加权评分器,可替换为真实训练模型
  • 打包交付:Markdown 博文 + 完整源码 zip

三、系统架构

Vue 3 前端
├─ 注册/登录页面
├─ 风控录入表单
├─ 评估记录表格
└─ 统计看板
│ HTTP + JWT

FastAPI 后端
├─ auth 用户认证模块
├─ risks 风险评估模块
├─ dashboard 统计模块
└─ SQLAlchemy ORM


SQLite 数据库
├─ users
└─ risk_applications

用户登录后,前端将 token 保存到 localStorage,调用受保护接口时统一在请求头中携带 Authorization: Bearer <token>。后端校验 token 后,只允许用户访问自己的风险评估数据。

四、功能模块

  • 用户模块

    • 用户注册
    • 用户登录
    • 密码哈希存储
    • JWT token 生成与校验
    • 获取当前登录用户
  • 风险评估模块

    • 录入申请人姓名、年龄、年收入、贷款金额、信用分、工作年限、负债率、逾期次数
    • 计算风险分
    • 输出 LOW/MEDIUM/HIGH 风险等级
    • 给出审批建议
  • 统计看板模块

    • 申请总数
    • 平均风险分
    • 低/中/高风险数量
  • 前端交互模块

    • 注册页
    • 登录页
    • 登录状态保持
    • 退出登录
    • 鉴权 API 请求封装
    • 风控表单与记录列表
  • 五、数据库/数据模型设计

    系统主要包含两张表。

    1. users 用户表

    字段类型说明
    id Integer 主键
    username String 用户名,唯一
    email String 邮箱,唯一
    hashed_password String 哈希后的密码
    created_at DateTime 创建时间

    2. risk_applications 风险申请表

    字段类型说明
    id Integer 主键
    applicant_name String 申请人姓名
    age Integer 年龄
    annual_income Float 年收入
    loan_amount Float 贷款金额
    credit_score Integer 信用分
    employment_years Float 工作年限
    debt_ratio Float 负债率
    overdue_count Integer 逾期次数
    risk_score Float 风险分
    risk_level String 风险等级
    suggestion Text 审批建议
    owner_id Integer 所属用户

    对应 SQLAlchemy 模型位于:backend/app/models.py。

    六、后端接口设计

    方法地址鉴权说明
    GET /api/health 健康检查
    POST /api/auth/register 注册
    POST /api/auth/login 登录并返回 token
    GET /api/auth/me 当前用户
    POST /api/risks 创建风险评估
    GET /api/risks 查询评估记录
    GET /api/dashboard 查询统计看板

    七、前端页面设计

    前端采用 Vue 3 + Vite,核心文件如下:

    frontend/
    ├─ package.json
    ├─ index.html
    └─ src/
    ├─ main.js
    ├─ App.vue
    ├─ api.js
    └─ style.css

    页面分为两种状态:

    • 未登录:显示登录/注册切换表单。
    • 已登录:显示统计看板、风险评估表单、评估记录表格和退出登录按钮。

    src/api.js 负责统一封装 API 请求,并在存在 token 时自动追加认证请求头。

    八、核心代码讲解

    1. FastAPI 应用入口

    backend/app/main.py 中创建 FastAPI 应用,配置 CORS,初始化数据库,并定义认证与业务接口。

    app = FastAPI(title="金融风险评估系统 API", version="1.0.0")

    @app.post("/api/auth/login", response_model=schemas.TokenOut)
    def login(payload: schemas.UserLogin, db: Session = Depends(get_db)):
    user = crud.get_user_by_username(db, payload.username)
    if not user or not crud.verify_password(payload.password, user.hashed_password):
    raise HTTPException(status_code=401, detail="用户名或密码错误")
    token = create_access_token({"sub": user.username})
    return {"access_token": token, "token_type": "bearer", "user": user}

    登录成功后返回 JWT,前端后续访问风险评估接口时必须携带 token。

    2. 密码哈希与用户创建

    backend/app/crud.py 使用 Passlib 对密码进行哈希,避免明文密码入库。

    pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")

    def hash_password(password: str) > str:
    return pwd_context.hash(password)

    def verify_password(plain_password: str, hashed_password: str) > bool:
    return pwd_context.verify(plain_password, hashed_password)

    3. 风险评分模型

    示例项目内置轻量机器学习风格评分器,对多个特征进行归一化和加权:

    score = (
    credit_component * 35
    + debt_component * 25
    + overdue_component * 20
    + income_loan_ratio * 12
    + employment_component * 6
    + age_component * 2
    )

    评分越高代表风险越大:

    • LOW:低风险,可快速复核
    • MEDIUM:中风险,需要补充材料或降低授信额度
    • HIGH:高风险,建议拒绝或人工复核

    在真实业务中,可以将该函数替换为训练好的 scikit-learn、XGBoost 或深度学习模型。

    4. 前端鉴权请求

    frontend/src/api.js 统一封装请求:

    const token = getToken()
    if (token) headers.Authorization = `Bearer ${token}`

    这样 App.vue 中调用 api.dashboard()、api.risks()、api.createRisk() 时会自动带上 token。

    5. Vue 交互逻辑

    App.vue 使用组合式 API 管理登录状态、表单数据与列表刷新。用户提交风险表单后,调用后端 /api/risks 接口,成功后重新加载看板与记录。

    九、部署与运行步骤

    1. 启动后端

    cd project/backend
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
    uvicorn app.main:app –reload –host 0.0.0.0 –port 8000

    后端默认地址:http://127.0.0.1:8000。

    2. 启动前端

    cd project/frontend
    npm install
    npm run dev

    前端默认地址:http://127.0.0.1:5173。

    3. 使用流程

  • 注册账号。
  • 登录系统。
  • 填写申请人金融信息。
  • 提交风险评估。
  • 在评估记录和统计看板中查看结果。
  • 十、项目总结

    本文完成了一个围绕金融风控业务的 Python 全栈项目,覆盖了从数据库建模、后端接口、认证鉴权、风险评分到 Vue 3 前端展示的完整流程。项目虽然使用轻量评分器模拟机器学习模型,但架构上已经预留了模型替换位置,可以扩展为真实训练模型、批量导入、审批流、模型版本管理和风控规则引擎等功能。

    项目代码

    下载链接

    赞(0)
    未经允许不得转载:171主机测评 » Python全栈项目--基于机器学习的金融风险评估系统
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址