跳转到主要内容
2.1.3 · 建议 20 分钟 · 满分 17

信用评分模型数据清洗和标注流程设计

背景

互联网金融飞速发展,使得个人金融理财变得越来越容易。而其中信用评分技术是一种对贷款申请人(信用卡申请人)做风险评估分值的统计模型,可以根据客户提供的资料、客户的历史数据、第三方平台数据(芝麻分、京东、微信等),对客户的信用进行评估。现要求根据提供的 Finance 数据集,选择合适的特征,开发一个申请的评分模型,对未来一段时间内借贷人出现违约的概率进行预测,对客户信用进行评估打分。提供的数据集样本数据一共 15000 条,10 个自变量,1 个因变量(SeriousDlqin2yrs)。在开发评分模型之前,首先要对数据进行数据清洗。

工作任务

  1. 正确加载数据集,并显示前五行的数据。
  2. 检查数据集中的异常值并处理异常值。使用箱线图检测异常值(图像尺寸 12×8,3 行 4 列子图),使用 IQR 方法处理异常值。
  3. 检查数据集中的重复值并删除所有重复值,并记录删除的行数。
  4. 对数据进行归一化处理。
  5. 将 SeriousDlqin2yrs 设为目标变量并标注。
  6. 对数据进行划分(训练集占 80%)。
  7. 保存处理后的数据,并命名为:2.1.3_cleaned_data.csv。

素材预览

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,13,0,6,0,2
2,0,0.957151019,40,0,0.121876201,2600,4,0,0,0,1
...

代码填空

import pandas as pd

# 加载数据
data = 

# 显示前五行的数据


import matplotlib.pyplot as plt
import seaborn as sns

# 设置图像尺寸
plt.figure(figsize=(12, 8))

# 识别数值列用于箱线图
numeric_cols = data.select_dtypes(include=['float64', 'int64']).columns

# 创建箱线图
for i, col in enumerate(numeric_cols, 1):
    plt.subplot(3, 4, i)
    sns.boxplot(x=data[col])
    plt.title(col)

plt.tight_layout()
plt.show()

# 使用IQR处理异常值
Q1 = (0.25)
Q3 = (0.75)
IQR = 

# 移除异常值
data_cleaned = data[~((data[numeric_cols] < (Q1 - 1.5 * )) | (data[numeric_cols] > (Q3 + 1.5 * ))).any(axis=1)]

# 检查处理重复值
duplicates = ()
num_duplicates = duplicates.sum()
data_cleaned = data_cleaned[~duplicates]

print(f'删除的重复行数: {num_duplicates}')

#对数据进行归一化处理
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
data_cleaned[numeric_cols] = 

# 设定目标变量
target_variable = 

from sklearn.model_selection import train_test_split

# 定义特征和目标
X = (columns=[])   #1分
y =                          #1分

# 划分数据(训练集占80%)
X_train, X_test, y_train, y_test = (, random_state=42)

# 显示划分后的数据形状
print(f'训练数据形状: {X_train.shape}')
print(f'测试数据形状: {X_test.shape}')

# 保存清洗后的数据到CSV
cleaned_file_path = '2.1.3_cleaned_data.csv'
(, index=False)