废话不多说直接上代码:
import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, roc_auc_score
from statsmodels.stats.outliers_influence import variance_inflation_factor
# 1. 数据准备和预处理
data = pd.read_csv('credit_data.csv') # 读取数据集,假设包含特征变量和目标变量
data.dropna(inplace=True) # 处理缺失值
X = data.drop('default', axis=1) # 特征变量
y = data['default'] # 目标变量
# 2. 分箱(Binning)
# 对连续型特征进行分箱操作,将其转化为离散型变量。
# 这里以年龄(age)为例,将其分为5个箱子(bins)。
# 可以根据实际业务需求和统计分析来确定分箱方案。
X['age_bin'] = pd.cut(X['age'], bins=[0, 18, 30, 40, 50, float('inf')])
# 3. 特征工程
# 根据业务需求选择合适的特征变量,并进行编码等处理。
# 例如,对性别(gender)进行二值化编码
X['gender'] = X['gender'].map({'Male': 0, 'F