AI+金融应用入门:用 Python 搭建一个本地信用评分小模型

AI+金融应用并不一定从复杂的大模型开始,很多实际需求可以用结构化数据和传统机器学习完成。
本文针对想动手体验的零基础读者,用 Python 搭建一个本地信用评分小模型,覆盖数据准备、训练、接口封装和效果验证。
适用条件是:你有一台能安装 Python 3.9 及以上版本的电脑或服务器,不需要显卡,也不需要真实金融数据。

先确认环境和目录结构

开始前,确认 Python 和 pip 可用。
在终端执行:

python3 --version
pip3 --version

如果提示命令不存在,Linux 可安装 python3 和 python3-pip,Windows 请从 Python 官网下载安装包并勾选“Add Python to PATH”。
接着创建项目目录和虚拟环境:

mkdir -p ~/ai-finance-demo && cd ~/ai-finance-demo
python3 -m venv venv
source venv/bin/activate

Windows 激活命令为 venv\Scripts\activate。
激活后命令行前应出现 (venv)。
然后安装依赖:

pip install scikit-learn pandas fastapi uvicorn joblib

如果下载慢,
可临时使用国内镜像源,
例如 pip install -i https:
//pypi.tuna.tsinghua.edu.cn/simple ...
,
但不要长期写死不可靠的源。

构造一份可解释的模拟数据

金融场景对数据质量敏感,这里用模拟数据避免隐私问题。
在项目目录新建 make_data.py,内容如下:

import pandas as pd
import numpy as np

np.random.seed(42)
n = 500
income = np.random.normal(8000, 3000, n).clip(2000, 30000)
debt_ratio = np.random.uniform(0.1, 0.8, n)
late_count = np.random.poisson(1.2, n)
score = 700 - debt_ratio * 200 - late_count * 30 + income / 300
label = (score > 550).astype(int)

df = pd.DataFrame({
    'income': income.round(2),
    'debt_ratio': debt_ratio.round(3),
    'late_count': late_count,
    'label': label
})
df.to_csv('credit_data.csv', index=False)
print(df.head())
print('样本数:', len(df), '正例比例:', label.mean().round(2))

执行 python make_data.py,应看到前 5 行数据和正例比例。
注意:这里只是教学模拟,真实业务需要合规授权和特征工程,不能直接用于信贷决策。

训练模型并保存

新建 train_model.py:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, roc_auc_score
import joblib

df = pd.read_csv('credit_data.csv')
X = df[['income', 'debt_ratio', 'late_count']]
y = df['label']

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
pred = model.predict(X_test)
prob = model.predict_proba(X_test)[:, 1]

print('准确率:', accuracy_score(y_test, pred).round(3))
print('AUC:', roc_auc_score(y_test, prob).round(3))
joblib.dump(model, 'credit_model.pkl')
print('模型已保存为 credit_model.pkl')

运行 python train_model.py。
如果数据生成正常,应得到准确率和 AUC 数值,并生成模型文件。
若报 ModuleNotFoundError,回到虚拟环境检查依赖是否装全。

用 FastAPI 暴露预测接口

新建 app.py:

from fastapi import FastAPI
from pydantic import BaseModel
import joblib
import numpy as np

app = FastAPI()
model = joblib.load('credit_model.pkl')

class CreditInput(BaseModel):
    income: float
    debt_ratio: float
    late_count: int

@app.post('/predict')
def predict(item: CreditInput):
    features = np.array([[item.income, item.debt_ratio, item.late_count]])
    prob = model.predict_proba(features)[0][1]
    return {'default_risk': round(float(prob), 4)}

启动服务:

uvicorn app:app --host 127.0.0.1 --port 8000

另开终端测试:

curl -X POST http://127.0.0.1:8000/predict \
  -H 'Content-Type: application/json' \
  -d '{"income": 9000, "debt_ratio": 0.3, "late_count": 0}'

应返回类似 {"default_risk":0.12} 的 JSON。
数值只代表模型输出,不是真实违约概率。

常见报错与避坑

  • 端口被占用:启动时提示 Address already in use,换端口如 --port 8001,或先用 lsof -i:8000 查看占用进程。
  • 模型文件找不到:确保在项目目录启动,或把 credit_model.pkl 路径写成绝对路径。
  • 输入字段类型不匹配:late_count 必须是整数,传 "0" 字符串会触发校验错误,前端调用时注意类型转换。
  • 不要用真实敏感数据练习:本文数据为模拟生成,真实金融数据涉及隐私和合规,需在授权环境中处理。
  • 不要承诺模型效果:准确率和 AUC 只反映当前模拟数据,换数据后需重新评估,不能直接作为业务决策依据。

验证是否跑通

按顺序检查:credit_data.csv 是否存在且行数约 500;credit_model.pkl 是否生成;curl 请求是否返回 200 和 JSON 结果。
如果接口返回 422,优先检查请求体字段名和类型是否与 CreditInput 一致。

这套流程适合作为 AI+金融应用的入门练习,后续可以替换成真实脱敏数据、增加特征、加入模型版本管理。
但涉及实际金融业务时,需要专业风控和合规评估,不能仅凭本文模型上线。

分享到:
上一篇
AI教育机器人配置:从网络接入到语音交互的完整步骤
下一篇
AI智能风控系统搭建:从零部署到规则验证的实操流程
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意