✨ 觉得有用?别忘了点个 Star ⭐! 你的支持是我持续更新的最大动力!
🎯 项目目标
利用无监督学习对 11,344 只公募基金进行智能分组,挖掘高价值投资标的
本项目通过 K-means 聚类算法 对天天基金平台公开数据进行分析,旨在:
- 自动识别具有相似风险收益特征的基金群体;
- 揭示市场结构性分化(如"高增长高波动" vs "低增长稳收益");
- 为投资者提供数据驱动的分类参考与决策支持。
🔧 技术流程
1. 数据采集
- 模拟 AJAX 请求爬取天天基金平台数据;
- 获取字段包括:基金代码、名称、单位净值、日增长率、资产配置、成立日期等;
- 合法合规,避免高频请求,确保数据稳定性。
2. 数据清洗与预处理
- 剔除重复记录(共 56 条);
- 处理缺失值与异常值(采用 IQR 方法);
- 标准化日期格式与数值类型,统一数据口径。
3. 特征工程
构建以下核心特征用于聚类:
| 类别 | 特征 | 说明 |
|---|---|---|
| 收益类 | 日增长率、净值变化率 | 衡量短期与中期收益能力 |
| 风险类 | 增长波动性(30 日滚动标准差) | 反映价格稳定性 |
| 结构类 | 价值比率、日增长率排名 | 辅助判断市场地位 |
💡 特征重要性分析显示:日增长率贡献度最高(0.6572)
4. 聚类建模
- 使用 K-means++ 初始化提升收敛稳定性;
- 通过 肘部法则 与 轮廓系数(Silhouette Score = 0.4495) 确定最优聚类数 K=2;
- 最终聚类结果清晰区分两类基金:
- 聚类 0:低增长、低波动、稳健型(平均日增长率 0.31%)
- 聚类 1:高增长、高波动、进取型(平均日增长率 1.37%,夏普比率 0.88)
5. 可视化分析
- 散点图:展示聚类在"日增长率 vs 波动性"平面上的分布;
- 雷达图:对比两类基金在多维指标上的差异;
- 直方图:揭示日增长率呈右偏分布,仅 1.4% 基金日涨超 2%。
📈 关键发现
- 医疗健康主题基金表现最优 :平均日增长率达 1.51%;
- 市场呈现明显两极分化:高风险聚类虽波动大,但收益显著领先;
- 聚类 1 中包含大量行业主题基金(如新能源、半导体),具备高弹性特征;
- 低风险聚类以债券型、货币型基金为主,适合保守投资者。
📁 数据概览
| 项目 | 数值 |
|---|---|
| 基金样本数量 | 11,344 只 |
| 特征维度 | 10+ |
| 数据截止日期 | 2025-12-22 |
| 聚类数量(K) | 2 |
| 轮廓系数 | 0.4495 |
🚧 局限性与未来工作
当前局限
- 数据时效性受限(截至 2025 年底);
- 未纳入基金经理履历、基金规模、换手率等高阶特征;
- K-means 对非球形簇或噪声敏感。
未来方向
- 引入 K-prototype 聚类 处理混合类型数据(数值 + 类别);
- 融合 NLP 技术解析基金持仓文本描述;
- 构建 动态聚类系统,支持每日增量更新;
- 接入回测框架,验证聚类策略的长期收益表现。
📂 项目结构
bash
.
├── analyse/ # 原始与处理后的数据集
│ ├── analysis_version.ipynb # 数据可视化
│ ├── crawler.ipynb # 爬虫
│ └── data_clean_analysis.ipynb # 数据清洗,数据分析
│ └── data_model.ipynb # 数据建模
├── results/ # 聚类结果于总结
│ ├── tiantian jjin report.txt
│ ├── tiantianjin results.csv
│ └── tiantianjin_summary.csv
├── requirements.txt # 依赖库
└── README.md
🛠️ 快速开始
bash
# 克隆项目
git clone https://gitee.com/at-share/analyse-project.git
cd analyse-project
# 安装依赖
pip install -r requirements.txt
⚠️ 注意:原始数据需自行爬取或提供合法来源。项目不包含天天基金平台的原始数据文件。
🙌 致谢
- 数据来源:天天基金网
- 算法参考:scikit-learn KMeans, Silhouette Analysis
- 可视化:Matplotlib, Seaborn
✨ 本项目为学术研究与技术探索用途,不构成任何投资建议。