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

一、项目简介

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

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

二、技术栈

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

三、系统架构

text 复制代码
Vue 3 前端
  ├─ 注册/登录页面
  ├─ 风控录入表单
  ├─ 评估记录表格
  └─ 统计看板
       │ HTTP + JWT
       ▼
FastAPI 后端
  ├─ auth 用户认证模块
  ├─ risks 风险评估模块
  ├─ dashboard 统计模块
  └─ SQLAlchemy ORM
       │
       ▼
SQLite 数据库
  ├─ users
  └─ risk_applications

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

四、功能模块

  1. 用户模块

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

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

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

    • 注册页
    • 登录页
    • 登录状态保持
    • 退出登录
    • 鉴权 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,核心文件如下:

text 复制代码
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,初始化数据库,并定义认证与业务接口。

python 复制代码
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 对密码进行哈希,避免明文密码入库。

python 复制代码
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. 风险评分模型

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

python 复制代码
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 统一封装请求:

javascript 复制代码
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. 启动后端

bash 复制代码
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. 启动前端

bash 复制代码
cd project/frontend
npm install
npm run dev

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

3. 使用流程

  1. 注册账号。
  2. 登录系统。
  3. 填写申请人金融信息。
  4. 提交风险评估。
  5. 在评估记录和统计看板中查看结果。

十、项目总结

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

项目代码

下载链接

相关推荐
玩三国杀玩的8 分钟前
Pytorch-c++-CUDA
c++·pytorch·python·深度学习
Albert Edison12 分钟前
PyCharm 字体大小设置
ide·python·pycharm
watersink15 分钟前
机器学习极大似然估计与EM算法
人工智能·算法·机器学习
叠层归一研究院21 分钟前
如何用程序搭建一个 AGI 种子系统(一):从向量种子到无限生长引擎
人工智能·python·算法·机器学习·agi
yujunl1 小时前
总结一下U9客开的成果
开发语言
独隅1 小时前
KMP 全栈进化:Koog 框架打造纯 Kotlin AI Agent 实战效果
开发语言·人工智能·kotlin
l1258651 小时前
# RAG重排序实战:硅基流动bge-reranker-v2-m3在线API vs 本地CrossEncoder,一篇讲透两种方案
数据库·人工智能·python·深度学习·算法·机器学习·langchain
lhldsg1 小时前
社区健身场地规划实战指南:从器材配置到智能化管理经验分享
java·开发语言·经验分享·小程序
薛定e的猫咪2 小时前
(ICLR2026)MORL‑FB:从无奖励强化学习视角重新审视多目标强化学习
人工智能·深度学习·机器学习
问天_观心2 小时前
零基础在windows环境下的WSL使用llamafactory(一)
人工智能·windows·python·神经网络·语言模型·github·模型蒸馏