3. 特征工程

3.1 选择合适的特征

去除无关特征,数据集中包含以下列:

  • CustomerID(客户ID):是唯一标识符,对聚类没有意义,应当删除。
  • Gender(性别):可能会影响消费行为,但我们主要关注消费习惯,因此暂时不纳入聚类。
  • Age(年龄):可能影响消费行为,保留。
  • Annual Income (k$)(年收入):影响购买力,保留。
  • Spending Score (1-100)(消费评分):衡量客户忠诚度或消费习惯,保留。

我们最终选择的特征是 Age、Annual Income (k$) 和 Spending Score (1-100)。

# 删除无关列
df_cluster = df.drop(columns=['CustomerID', 'Gender'])

3.2 数据标准化

在 K-Means 聚类等算法中,数据的尺度会影响结果,因此我们需要对数据进行标准化(归一化到相同范围)。

这里使用 MinMaxScaler 归一化到 [0,1] 范围,以保持数据分布特性。

from sklearn.preprocessing import MinMaxScaler

# 归一化数据
scaler = MinMaxScaler()
df_cluster_scaled = pd.DataFrame(scaler.fit_transform(df_cluster), columns=df_cluster.columns)

# 查看归一化后的数据
df_cluster_scaled.head()

3.3 相关性分析与特征选择

在数据探索阶段,我们已经分析过特征之间的相关性。虽然年收入和消费评分的相关性不高,但它们是重要的业务指标,因此我们仍然保留所有三个特征。

3.4 小结

  1. 删除了无关特征 (CustomerID 和 Gender),仅保留 Age、Annual Income (k$) 和 Spending Score (1-100)。
  2. 使用 MinMaxScaler 进行了数据归一化,保证各特征处于相同数值范围。
  3. 未删除特征,因为所有保留的特征在业务上均有意义。
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容