跳转到主要内容
2.2.1 · 建议 20 分钟 · 满分 13

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

背景

互联网金融飞速发展,使得个人金融理财变得越来越容易。而其中信用评分技术是一种对贷款申请人(信用卡申请人)做风险评估分值的统计模型,可以根据客户提供的资料、客户的历史数据、第三方平台数据(芝麻分、京东、微信等),对客户的信用进行评估。现要求根据提供的 finance 数据集,补全 2.2.1.ipynb 代码。选择合适的特征,开发一个申请的评分模型,利用测试工具对模型进行测试,并对测试结果进行分析,完成测试报告,并运用工具对错误原因进行纠正。 数据集说明: - Unnamed: 0 - 索引号。 - SeriousDlqin2yrs - 个人在过去两年内是否出现过严重的拖欠(1 表示有严重拖欠,0 表示没有)。 - RevolvingUtilizationOfUnsecuredLines - 未偿还的信用额度与总信用额度的比例。 - age - 客户的年龄。 - NumberOfTime30-59DaysPastDueNotWorse - 过去一段时间内贷款逾期 30-59 天的次数。 - DebtRatio - 债务比率。 - MonthlyIncome - 客户的月收入。 - NumberOfOpenCreditLinesAndLoans - 正在使用的信贷账户或贷款的数量。 - NumberOfTimes90DaysLate - 贷款逾期超过 90 天的次数。 - NumberRealEstateLoansOrLines - 持有的房地产相关贷款或信贷的数量。 - NumberOfTime60-89DaysPastDueNotWorse - 贷款逾期 60-89 天的次数。 - NumberOfDependents - 家庭中依赖该个人的人数。

工作任务

  1. 正确加载数据集,显示前五行的数据。
  2. 使用 Logistic 模型进行模型训练,要求设定自变量和因变量,并根据自变量特征进行模型训练,最终将训练好的模型以文件名 2.2.1_model.pkl 保存到考生文件夹,结果文件以 2.2.1_results.txt 保存到考生文件夹。
  3. 使用测试工具对模型进行测试,并记录测试结果,命名 2.2.1_report.txt,保存到考生文件夹。
  4. 对测试结果进行详细分析,并编写测试报告,包括模型性能评估、错误分析及改进建议,写到 2.2.1.docx 答题卷文件。
  5. 运用工具分析算法中错误案例产生的原因并进行纠正,重新得到模型训练结果,以文件名 2.2.1_results_xg.txt 保存到考生文件夹。

素材预览

finance数据集.csv
Unnamed: 0,SeriousDlqin2yrs,RevolvingUtilizationOfUnsecuredLines,age,NumberOfTime30-59DaysPastDueNotWorse,DebtRatio,MonthlyIncome,NumberOfOpenCreditLinesAndLoans,NumberOfTimes90DaysLate,NumberRealEstateLoansOrLines,NumberOfTime60-89DaysPastDueNotWorse,NumberOfDependents
1,1,0.766126609,45,2,0.802982129,9120.0,13,0,6,0,2.0
2,0,0.957151019,40,0,0.121876201,2600.0,4,0,0,0,1.0

代码填空

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

# 加载数据
data = 

# 显示前五行的数据
print()

# 选择自变量和因变量
X = data.drop(['SeriousDlqin2yrs', 'Unnamed: 0'], axis=1)
y = data['SeriousDlqin2yrs']

# 分割训练集和测试集(测试集20%)
X_train, X_test, y_train, y_test = (, random_state=42)

# 训练Logistic回归模型(最大迭代次数为1000次)
model = 
#训练 Logistic 回归模型


# 保存模型
with open('2.2.1_model.pkl', 'wb') as file:
    pickle.

# 预测并保存结果
y_pred = 
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 = 
print(f"模型准确率: {accuracy:.2f}")

# 处理数据不平衡
smote = SMOTE(random_state=42)
X_resampled, y_resampled = 

# 重新训练模型

# 重新预测
y_pred_resampled = 

# 保存新结果
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 = 
print(f"重新采样后的模型准确率: {accuracy_resampled:.2f}")