Skip to content

lixinyu1011/xgb_predict_Splitting-energy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

配合物分裂能预测 - XGBoost机器学习项目

本项目用于基于数值描述符预测配合物的分裂能,使用XGBoost回归模型进行训练和预测,自动包含SHAP特征重要性分析

📊 数据结构

Excel表格列结构(配置在 src/config.py):

  • 第1列:序号
  • 第2列:配合物详细信息
  • 第4-5列:字符描述符(中心金属/配体说明)
  • 第6-17列:数值描述符(用于模型训练的特征)
  • 第18列:分裂能(预测目标)

🚀 快速开始

1. 安装依赖包

# 进入项目目录
cd C:\ML\机器学习lyp

# 安装依赖包
pip install -r requirements.txt

主要依赖包:pandas, numpy, scikit-learn, xgboost, shap, matplotlib, openpyxl, joblib

2. 数据准备

将数据文件放置在 data/ 目录:

  • data/配合物训练集.xlsx - 训练数据
  • data/配合物验证集.xlsx - 验证数据

3. 运行完整分析流程

# 相关性分析
python -m src.correlations

# PCA分析
python -m src.pca_analysis

# XGBoost训练(自动包含SHAP分析)
python -m src.train

🎯 XGBoost模型训练

基本训练(自动包含SHAP)

# 使用默认参数(400代)
python -m src.train

# 自定义训练代数
python -m src.train --n-estimators 1000

重要说明

  • SHAP分析自动运行:每次训练都会自动生成SHAP特征重要性分析
  • 统一时间戳命名:模型和SHAP文件使用相同的时间戳,方便对应查找
  • ✅ 模型使用早停机制(默认关闭):可在 src/train.py 第86行修改

训练过程说明

训练脚本会依次执行:

  1. 加载数据 - 读取训练集和验证集
  2. 数据预处理 - 提取第6-17列特征,第18列目标值,处理缺失值,标准化
  3. 模型训练 - 使用XGBoost训练,记录每一代的Loss、MAE、RMSE
  4. 绘制曲线 - 生成训练历史曲线图
  5. 模型评估 - 在验证集上评估性能
  6. 保存结果 - 保存模型、指标和预测结果
  7. SHAP分析 - 自动进行特征重要性分析(新增)

📁 输出文件位置

训练完成后,所有输出文件保存在 outputs/ 目录,使用相同的时间戳(例如 20251024_203045):

📊 图片文件 (outputs/figures/)

文件名 说明
xgb_loss_curve.png Loss (RMSE) 随训练代数变化曲线
xgb_mae_curve.png MAE 随训练代数变化曲线
xgb_rmse_curve.png RMSE 随训练代数变化曲线
shap_YYYYMMDD_HHMMSS.png SHAP特征重要性汇总图(自动生成)
correlation_heatmap_pearson.png Pearson相关性热力图
correlation_heatmap_spearman.png Spearman相关性热力图
pca_train.png PCA降维可视化图

📄 数据文件 (outputs/reports/)

文件名 说明
xgb_training_history.csv 完整训练历史(每一代的Loss、MAE、RMSE)
xgb_metrics.json 最终评估指标(训练集和验证集的MAE、RMSE)
xgb_predictions.csv 验证集预测结果(真实值、预测值、误差)
shap_YYYYMMDD_HHMMSS.csv SHAP值CSV表格(自动生成,可用Excel打开)
shap_YYYYMMDD_HHMMSS.npy SHAP值数组(自动生成,可用numpy读取)
shap_importance_YYYYMMDD_HHMMSS.csv SHAP特征重要性排名(自动生成)
correlations_pearson_full.csv Pearson相关系数完整矩阵
correlations_spearman_full.csv Spearman相关系数完整矩阵

🤖 模型文件 (outputs/models/)

文件名格式 说明
xgb_YYYYMMDD_HHMMSS.pkl 训练好的XGBoost模型(含时间戳)

模型文件包含:训练好的XGBoost模型、数据预处理器(填充器和标准化器)、评估指标、特征列和目标列信息

📈 如何查看结果

1. 查看训练曲线

打开 outputs/figures/ 目录下的三张曲线图:

  • Loss曲线:观察训练集和验证集的Loss是否收敛
  • MAE曲线:观察平均绝对误差的变化趋势
  • RMSE曲线:观察均方根误差的变化趋势

正常情况:训练集和验证集曲线都应该下降且趋势相近;如果验证集曲线上升,说明过拟合

2. 查看评估指标

用文本编辑器或浏览器打开 outputs/reports/xgb_metrics.json

{
  "train": {"MAE": 123.45, "RMSE": 234.56},
  "valid": {"MAE": 345.67, "RMSE": 456.78}
}
  • MAE:平均绝对误差,越小越好
  • RMSE:均方根误差,越小越好

3. 查看预测结果

用Excel打开 outputs/reports/xgb_predictions.csv,可以:

  • 对比真实值和预测值的差异
  • 找出误差较大的样本
  • 分析预测偏差的规律

4. 查看SHAP特征重要性(自动生成)

查看SHAP汇总图

打开 outputs/figures/shap_YYYYMMDD_HHMMSS.png

图表组成

  • Y轴:特征名称(从重要到不重要排序)
  • X轴:SHAP值(特征对预测的贡献)
  • 颜色:特征的实际数值(红=高,蓝=低)
  • 点的位置:每个样本在该特征上的SHAP值

解读方法

  • 排在最上面的特征是最重要的
  • SHAP值为正表示该特征增加预测值,为负表示降低预测值
  • 如果红点集中在右侧,说明该特征值越大,预测值越大
  • 如果蓝点集中在右侧,说明该特征值越小,预测值越大

查看SHAP数据CSV

用Excel打开 outputs/reports/shap_YYYYMMDD_HHMMSS.csv

  • 每一行:一个样本
  • 每一列:一个特征的SHAP值
  • 数值为正:该特征增加预测值
  • 数值为负:该特征降低预测值

查看特征重要性排名

用Excel打开 outputs/reports/shap_importance_YYYYMMDD_HHMMSS.csv

feature importance
feat_3 0.1234
feat_7 0.0987
... ...

越靠前的特征对预测越重要。

🔧 配置修改

如需修改列位置或其他配置,编辑 src/config.py

TEXT_COLS_POS = [3, 4]           # 字符列位置
DESCRIPTOR_COLS_RANGE = (5, 17)  # 数值特征列范围(第6-17列)
TARGET_COL_POS = 17              # 目标列位置(第18列)
RANDOM_STATE = 42                # 随机种子

📞 项目结构

机器学习lyp/
├── data/                       # 数据目录
│   ├── 配合物训练集.xlsx
│   └── 配合物验证集.xlsx
├── outputs/                    # 输出目录
│   ├── figures/               # 图片
│   ├── reports/               # 报告和数据
│   └── models/                # 模型文件
├── src/                       # 源代码
│   ├── config.py             # 配置文件
│   ├── data_loader.py        # 数据加载
│   ├── train.py              # 训练脚本(自动包含SHAP)
│   ├── shap_analysis.py      # SHAP分析模块
│   ├── correlations.py       # 相关性分析
│   └── pca_analysis.py       # PCA分析
├── requirements.txt          # 依赖包列表
└── README.md                 # 本文件

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages