基于深度学习的近红外光谱数据无监督降维与特征学习系统
本项目实现了基于Autoencoder的近红外(NIR)光谱降维系统,用于8种农产品光谱数据的无监督降维和精确特征重构。
主要特点:
- ✅ 无监督学习 - 不依赖标签,自主学习光谱低维表示
- ✅ 高效压缩 - 737维→100维,压缩率7.37倍,节省86.4%存储空间
- ✅ 精确重构 - 从100维潜在特征高质量重构原始737维光谱
- ✅ 多品种支持 - 支持8种农产品(红豆、当归、胡萝卜、大蒜、生姜、人参、大豆、小麦)
- ✅ 产地溯源 - 区分国产vs进口农产品的光谱差异特征
- ✅ 可视化分析 - t-SNE/PCA潜在空间可视化,直观展示降维效果
- ✅ 完整文档 - 详细的中文文档和使用指南
输入层 (737维NIR光谱)
↓
编码器 Encoder
└─ Linear(737 → 100) + SELU激活
↓
潜在空间 Latent Space (100维) ← 压缩的低维表示
↓
解码器 Decoder
└─ Linear(100 → 737) + SELU激活
↓
输出层 (737维重构光谱)
损失函数: MSE重构误差
优化器: Adam (lr=0.001)
自编码器(Autoencoder)用于谱图降维及特征重构/
├── config.py # 配置文件
├── train.py # 训练脚本
├── dimension_reduction.py # 降维脚本
├── reconstruct.py # 重构脚本
├── visualize.py # 可视化脚本
├── quick_start.py # 快速演示
├── requirements.txt # 依赖列表
├── README.md # 项目说明(本文件)
├── 环境配置.md # 环境安装指南
├── 使用指南.md # 详细使用文档
│
├── models/ # 模型定义
│ ├── __init__.py
│ └── autoencoder.py # Autoencoder模型类
│
├── data/ # 数据处理
│ ├── __init__.py
│ └── data_generator.py # NIR光谱数据生成器
│
├── utils/ # 工具函数
│ ├── __init__.py
│ ├── dataset.py # PyTorch数据集类
│ └── metrics.py # 评估指标函数
│
├── saved_models/ # 模型文件(训练后生成)
├── results/ # 结果图表(训练后生成)
└── logs/ # 日志文件(训练后生成)
- Python: 3.8 - 3.10
- 操作系统: Windows / Linux / macOS
- 内存: 建议4GB以上
- GPU: 可选(默认CPU模式)
1. 创建环境
conda create -n autoencoder_env python=3.9 -y
conda activate autoencoder_env2. 安装依赖
# 使用conda(推荐)
conda install pytorch numpy scikit-learn matplotlib tqdm -y
# 或使用pip
pip install -r requirements.txt3. 快速测试
python quick_start.py# 训练模型(约5-10分钟)
python train.py
# 降维:737维 → 100维
python dimension_reduction.py --mode batch
# 重构:100维 → 737维
python reconstruct.py --mode single
# 可视化潜在空间
python visualize.py| 指标 | 训练集 | 测试集 | 说明 |
|---|---|---|---|
| MSE | ~0.001 | ~0.002 | 均方误差 |
| RMSE | ~0.03 | ~0.04 | 均方根误差 |
| 相关系数 | >0.99 | >0.98 | 重构相关性 |
| 压缩率 | - | 7.37× | 737→100维 |
| 空间节省 | - | 86.4% | 存储优化 |
基于400个NIR光谱样本的测试结果
- ✅ 数据压缩存储 - 大规模光谱数据库的存储优化
- ✅ 特征提取 - 为下游分类/回归任务提供低维特征
- ✅ 异常检测 - 通过重构误差识别异常样本
- ✅ 可视化分析 - 高维光谱数据的降维可视化
- ✅ 质量控制 - 农产品质量一致性评估
- ✅ 产地溯源 - 国产vs进口产品的光谱差异分析
- ✅ 迁移学习 - 预训练编码器可迁移到其他任务
- 深度学习框架: PyTorch 1.10+
- 数值计算: NumPy 1.21+
- 机器学习: scikit-learn 1.0+
- 可视化: Matplotlib 3.4+
- 其他工具: tqdm(进度条)
本项目仅供学习和研究使用。
如有问题或建议,欢迎通过以下方式联系:
- 📧 提交Issue
- 📝 查看详细文档
版本: v1.0
更新日期: 2025-10-27