3. 特征工程

特征工程是数据分析和建模中非常重要的一步,通过选择、提取或构造对模型有效的特征,可以提高模型的性能和预测准确性。在本案例中,我们将进行特征选择、构造新特征,确保它们与分析目标(预测客户流失)相关。最后,数据会被分割为训练集和测试集,以便后续的模型训练和评估。

3.1 特征选择

在初步探索后,我们需要根据业务需求和数据分析目标选择与客户流失相关的特征。

以下是我们需要的主要特征:

  • CreditScore: 客户的信用评分
  • Geography: 客户所在的国家
  • Gender: 客户性别
  • Age: 客户年龄
  • Tenure: 客户持有账户的时间(年)
  • Balance: 客户账户余额
  • NumOfProducts: 客户持有的银行产品数量
  • HasCrCard: 客户是否拥有信用卡
  • IsActiveMember: 客户是否为活跃用户
  • EstimatedSalary: 客户的预估工资
  • 目标变量: Exited(是否流失)

我们将丢弃无关或对预测无用的列,如RowNumber、CustomerId和Surname。

# 丢弃不相关的列
df = df.drop(['RowNumber', 'CustomerId', 'Surname'], axis=1)

# 检查特征选择后的数据
print(df.head())

3.2 特征编码

有些列是类别型数据(如Geography和Gender),在机器学习中我们需要将这些类别特征转化为数值表示。我们将使用独热编码(One-Hot Encoding) 来处理这些类别特征。

# 使用独热编码处理类别特征
df = pd.get_dummies(df, columns=['Geography', 'Gender'], drop_first=True)

# 查看编码后的数据集
print(df.head())

在这里,Geography列将被分解为三个国家(例如,Geography_France,Geography_Germany),Gender列会转换为一个二值变量(0表示女性,1表示男性)。

3.3 构造新特征

我们还可以构造新的特征来增强模型的预测能力。例如,我们可以创建一个新的特征BalanceSalaryRatio,表示客户的账户余额与其预估工资的比率,这可能与客户的流失行为有一定关系。

# 创建新特征:账户余额与预估工资的比率
df['BalanceSalaryRatio'] = df['Balance'] / df['EstimatedSalary']

# 检查新特征的分布
print(df[['Balance', 'EstimatedSalary', 'BalanceSalaryRatio']].head())

3.4 数据集划分 & 数据标准化

数值特征如CreditScore、Age、Balance等的范围差别很大,可能影响模型的性能。我们将对这些特征进行标准化处理,将它们缩放到相同的尺度。

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# 定义特征和目标变量
X = df.drop('Exited', axis=1)
y = df['Exited']

# 先划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 选择需要标准化的数值特征
numeric_features = ['CreditScore', 'Age', 'Tenure', 'Balance', 'NumOfProducts', 'EstimatedSalary', 'BalanceSalaryRatio']

# 初始化标准化器
scaler = StandardScaler()

# 在训练集上拟合标准化器
X_train[numeric_features] = scaler.fit_transform(X_train[numeric_features])

# 使用相同的标准化器转换测试集
X_test[numeric_features] = scaler.transform(X_test[numeric_features])

3.5 小结

  1. 特征选择:我们选择了与客户流失相关的特征,丢弃了与业务无关的列。
  2. 特征编码:通过独热编码处理了类别型特征Geography和Gender,将其转化为数值。
  3. 特征构造:新增了BalanceSalaryRatio特征,进一步增强模型的预测能力。
  4. 特征标准化:对数值型特征进行了标准化处理,以提高模型的训练效果。
  5. 数据集划分:将数据划分为训练集和测试集,为后续的模型训练做好准备。
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容