Day 111 练习题 — 无监督学习:K-Means 聚类与 PCA 降维
练习 1:肘部法则实战
目标: 使用肘部法则为不同数据集选择最佳 K 值
要求: 1. 生成 3 个不同分布的数据集(3簇、5簇、不规则形状) 2. 对每个数据集使用肘部法则和轮廓系数法选择 K 3. 比较两种方法的结果,分析差异原因
提示:
- 使用 sklearn.datasets.make_blobs 生成数据
- 注意肘部法则在某些分布下可能不明显
- 考虑使用轮廓系数作为辅助判断
评分标准: - [ ] 正确生成 3 个数据集 - [ ] 正确计算 WCSS 和轮廓系数 - [ ] 绘制清晰的肘部法则图和轮廓系数图 - [ ] 分析两种方法的差异
练习 2:PCA 降维效果分析
目标: 分析 PCA 降维对不同数据集的效果
要求: 1. 使用 Iris 数据集(4维)和 MNIST 子集(784维) 2. 分析不同保留方差比例(90%、95%、99%)下需要的主成分数量 3. 比较降维前后的分类准确率(使用 KNN 分类器) 4. 可视化前两个主成分的投影结果
提示:
- 对高维数据,先使用 PCA 降维到合理维度再训练分类器
- 考虑使用 Pipeline 简化流程
- 注意标准化的重要性
评分标准: - [ ] 正确计算方差解释比例 - [ ] 正确绘制碎石图和累积方差图 - [ ] 正确比较降维前后的分类性能 - [ ] 分析降维对高维数据的效果
练习 3:客户分群增强版
目标: 在基础客户分群上增加聚类质量评估
要求: 1. 扩展数据特征(加入注册时长、最近购买天数等) 2. 使用多种评估指标(轮廓系数、Calinski-Harabasz、Davies-Bouldin) 3. 对比不同 K 值下的聚类质量 4. 分析各客户群的 RFM(Recency, Frequency, Monetary)特征
提示: - Calinski-Harabasz 值越大越好 - Davies-Bouldin 值越小越好 - RFM 分析是客户分群的经典方法
评分标准: - [ ] 正确扩展数据特征 - [ ] 正确计算多种评估指标 - [ ] 绘制评估指标对比图 - [ ] 完成 RFM 分析
练习 4:异常检测与聚类
目标: 使用聚类方法进行异常检测
要求: 1. 生成正常数据和少量异常数据 2. 使用 K-Means 聚类,将距离簇中心较远的点标记为异常 3. 评估异常检测的准确率和召回率 4. 与 Isolation Forest 方法对比
提示:
- 设置距离阈值(如 95% 分位数)
- 使用 sklearn.metrics 计算评估指标
- 考虑异常点比例对结果的影响
评分标准: - [ ] 正确生成正常和异常数据 - [ ] 正确实现基于聚类的异常检测 - [ ] 与 Isolation Forest 对比 - [ ] 分析两种方法的优缺点
练习 5:降维与聚类的结合
目标: 探索先降维再聚类 vs 先聚类再降维的效果
要求: 1. 使用高维数据集(20+ 特征) 2. 方案A:先 PCA 降维到 2/3/5 维,再 K-Means 聚类 3. 方案B:先 K-Means 聚类,再 PCA 降维可视化 4. 对比两种方案的聚类质量和可视化效果 5. 分析降维信息损失对聚类的影响
提示: - 方案A 的降维会丢失部分信息 - 方案B 保留了完整信息但可视化可能重叠 - 考虑使用 t-SNE 作为 PCA 的替代方案
评分标准: - [ ] 正确实现两种方案 - [ ] 对比聚类质量指标 - [ ] 分析降维对聚类的影响 - [ ] 给出实践建议
提交要求
- 每个练习单独一个 Python 文件
- 代码需完整可运行
- 包含必要的注释和输出说明
- 保存结果图片到当前目录