Skip to content

智能信用评分Logistic回归模型开发与测试

1.导入库

python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import pickle
from sklearn.metrics import classification_report
from imblearn.over_sampling import SMOTE
  • pandas : 数据处理库
  • train_test_split : 数据集划分⼯具
  • LogisticRegression : 逻辑回归模型
  • pickle : Python 对象序列化模块
  • classification_report : 分类评估报告⽣成器
  • SMOTE : 过采样⽅法处理不平衡数据

2.数据加载与预览

python
data = pd.read_csv('finance数据集.csv')
print(data.head())
  • pd.read_csv() : 读取 CSV ⽂件

    • 参数:⽂件路径
  • head() : 显示前 5 行数据

  • 功能:加载数据并初步检查

3.特征与目标分离

python
X = data.drop(['SeriousDlqin2yrs', 'Unnamed: 0'], axis=1)
y = data['SeriousDlqin2yrs']
  • datdrop() : 移除指定列

    • axis=1 : 按列操作
    • 移除目标列和无关索引列
  • 功能:创建特征矩阵 X 和目标向量 y

4.数据集划分

python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  • train_test_split() : 划分训练 / 测试集
    • test_size=0.2 : 测试集占比 20%
    • random_state=42 : 随机种⼦(保证可重复性)

5.初始模型训练

python
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
  • LogisticRegression() : 创建逻辑回归模型

    • max_iter=1000 : 最⼤迭代次数
  • fit() : 模型训练⽅法

    • 参数:训练集特征和⽬标

6.模型保存

python
with open('2.2.1_model.pkl', 'wb') as file:
	pickle.dump(model, file)
  • pickle.dump() : 序列化保存模型
    • 'wb' : 以⼆进制写入模式打开⽂件
    • 保存到 '2.2.1_model.pkl'

7.初始预测与评估

python
y_pred = model.predict(X_test)
pd.DataFrame(y_pred, columns=['预测结果']).to_csv('2.2.1_results.txt', index=False)

report = classification_report(y_test, y_pred, zero_division=1)
with open('2.2.1_report.txt', 'w') as file:
    file.write(report)
    
accuracy = (y_test == y_pred).mean()
print(f"模型准确率: {accuracy:.2f}")
  • predict() : 生成预测结果
  • classification_report() : ⽣成分类报告
    • zero_division=1 : 处理除零警告
  • 手动计算准确率
  • 保存预测结果和评估报告

8.处理数据不平衡

python
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)
  • SMOTE() : 创建过采样器
    • random_state=42 : 随机种⼦
  • fit_resample() : ⽣成平衡数据
    • 通过合成少数类样本来平衡数据

9.重新训练与评估

python
model.fit(X_resampled, y_resampled)
y_pred_resampled = model.predict(X_test)

pd.DataFrame(y_pred_resampled, columns=['预测结果']).to_csv('2.2.1_results_xg.txt', 
index=False)

report_resampled = classification_report(y_test, y_pred_resampled, zero_division=1)
with open('2.2.1_report_xg.txt', 'w') as file:
    file.write(report_resampled)
    
accuracy_resampled = (y_test == y_pred_resampled).mean()
print(f"重新采样后的模型准确率: {accuracy_resampled:.2f}")
  • 使⽤平衡数据重新训练模型
  • ⽣成新的预测和评估报告
  • ⽐较处理前后的准确率

10.错误分析

0(没有严重逾期):

准确率很高,召回率也很高,表明模型在这一类别上的性能非常好。

可能的错误主要来自于少数漏报情况,即极少数实际没有严重逾期的样本被错误预测为有严重逾期。

1(有严重逾期):

准确率较低,召回率也很低,F1-Score仅为0.22,表明模型在这一类别上的性能较差。

主要问题在于大量的漏报(真正有严重逾期的样本被预测为没有)和一定的误报(将没有严重逾期的样本预测为有)。

11.改进建议

1.数据处理策略调整

重采样技术:由于数据集存在明显的不平衡,可以考虑使用过采样(如SMOTE)或欠采样技术来平衡两个类别的数量。

2.特征工程优化

特征选择:仔细审查现有特征,去除冗余或不相关的特征,可能有助于提升模型性能。

特征构造:尝试创建新的、更具区分力的特征,如基于现有特征的交互项或衍生指标。