Kaggle TPS 2022年8月竞赛的 Kaggle 流水线
这是一个基于Python的开源Kaggle表格数据竞赛流水线。虽然它是为Kaggle TPS 2022年8月竞赛定制的,但通过有限的代码修改,这个项目可以用作任何表格数据竞赛的流水线。本项目包含了大多数机器学习竞赛相关任务的API:
- 数据处理
- 可视化
- 特征工程
- 训练
- 集成
- 特征选择
- 超参数优化
- 实验跟踪
- 向Kaggle提交预测结果
项目结构
- data
- features - 存放包含工程化特征的parquet文件的位置
- processed - 存放初步处理后的原始数据parquet文件的位置
- raw - 存放原始数据(训练集、测试集、样本提交)parquet文件的位置
- fi - 存储特征重要性CSV文件的位置
- fi_fig - 存储捕捉特征重要性的图表的位置
- hpo - 保存超参数优化成果的位置
- logs - Python模块生成的日志存放位置
- notebooks - 可以在此保存任何Jupyter笔记本
- oof - 保存折外预测的位置
- src
- common - 包含通用工具函数的包
- config - 包含配置相关模块的包
- cv - 包含交叉验证相关函数的包
- fe - 包含特征工程相关函数的包
- fs - 包含特征选择相关函数的包
- hpo - 包含超参数优化相关函数的包
- modeling - 包含训练/预测相关函数的包
- munging - 包含数据处理/探索相关函数的包
- pre_process - 包含数据预处理相关函数的包
- scripts - 特征工程、训练脚本的位置
- ts - 包含时间序列相关函数的包
- viz - 包含数据可视化相关函数的包
- submissions - 预测结果和提交脚本的位置
- tracking - 用于跟踪实验的CSV文件
致谢
- 我借鉴了Kaggle大师Rob Mulla开源的代码中的初始项目结构和框架代码
- 许多实用函数来自Abhishek Thakur的"Approaching (Almost) Any Machine Learning Problem"
- 我使用了一些来自SRK的GitHub仓库中的特征选择相关代码
执行步骤:
-
在<PROJECT_HOME>目录下从GitHub克隆源代码。
> git clone https://github.com/arnabbiswas1/kaggle_pipeline_tps_aug_22.git
这将创建以下目录结构:
> <PROJECT_HOME>/kaggle_pipeline_tps_aug_22
-
创建conda环境:
> conda env create --file environment.yml
-
进入
<PROJECT_HOME>/kaggle_pipeline_tps_aug_22
并激活conda环境:> conda activate py_k
-
进入
<PROJECT_HOME>/kaggle_pipeline_tps_aug_22/data/raw
原始数据目录。从Kaggle下载数据集(需要按照链接配置Kaggle API):> kaggle competitions download -c tabular-playground-series-aug-2022
-
解压数据:
> unzip tabular-playground-series-aug-2022.zip
-
在
<PROJECT_HOME>/kaggle_pipeline_tps_aug_22/src/config/constants.py
中将变量HOME_DIR
的值设置为<PROJECT_HOME>/kaggle_pipeline_tps_aug_22
的绝对路径 -
要将原始数据处理成parquet格式,请进入
<PROJECT_HOME>/kaggle_pipeline_tps_aug_22
。执行以下命令:> python -m src.scripts.data_processing.process_raw_data
这将在
<PROJECT_HOME>/kaggle_pipeline_tps_aug_22/data/processed
下创建3个parquet文件,分别代表训练集、测试集和样本提交CSV -
要触发特征工程,请进入
<PROJECT_HOME>/kaggle_pipeline_tps_aug_22
。执行以下命令:> python -m src.scripts.data_processing.create_features
这将在
<PROJECT_HOME>/kaggle_pipeline_tps_aug_22/data/features
下创建一个包含所有工程化特征的parquet文件 -
要使用LGBM训练基线模型,请进入
<PROJECT_HOME>/kaggle_pipeline_tps_aug_22
。执行以下命令:> python -m src.scripts.training.lgb_baseline
这将在
<PROJECT_HOME>/kaggle_pipeline_tps_aug_22/submissions
下创建提交文件,在<PROJECT_HOME>/kaggle_pipeline_tps_aug_22/oof
下创建折外预测,并在<PROJECT_HOME>/kaggle_pipeline_tps_aug_22/fi
下创建捕获特征重要性的CSV文件
实验结果将在<PROJECT_HOME>/kaggle_pipeline_tps_aug_22/tracking/tracking.csv
中进行跟踪
-
要将提交文件提交到Kaggle,请进入
<PROJECT_HOME>/kaggle_pipeline_tps_aug_22/submissions
:> python -m submissions_1.py
注意:
要使用plotly可视化optuna的图表(即plotly依赖项),需要执行以下操作:
jupyter labextension install jupyterlab-plotly@4.14.3