目录
一:anaconda的环境配置
二:赛题任务解读
2.1 任务要求
2.2 数据集介绍
2.3 评估指标
三:机器学习之 LightGBM
一:anaconda的环境配置
-
下载Anaconda:访问Anaconda官方网站(https://www.anaconda.com/products/individual)下载适合你操作系统的Anaconda安装包。选择Python 3.x版本的安装包。
-
安装Anaconda:下载完成后,运行安装包,按照向导完成Anaconda的安装过程。在安装过程中,你可以选择将Anaconda安装到默认路径或自定义路径。
-
创建环境:安装完成后,打开Anaconda Navigator(或者在命令行中输入
anaconda-navigator
)或Anaconda Prompt,然后执行以下命令创建一个新的环境:conda create --name myenv
其中,
myenv
是你所创建环境的名称,你可以根据需求修改它。 -
激活环境:创建环境后,需要激活该环境才能使用。在Anaconda Prompt中执行以下命令激活环境:
-
在Windows上:
conda activate myenv
-
在macOS和Linux上:
conda activate myenv
激活环境后,命令行的前缀会显示环境的名称(如
(myenv) C:\User\Username>
)。 -
-
安装软件包:在激活的环境下,你可以使用conda命令或者pip命令安装需要的软件包。例如,使用conda安装numpy:
conda install numpy
或者使用pip安装:
pip install numpy
根据你的需求,安装其他软件包。
-
使用环境:完成环境的配置后,你可以使用该环境运行你的Python程序。在激活环境的状态下,使用命令行执行Python程序或者使用集成开发环境(IDE)加载该环境。
-
关闭环境:当你完成使用环境时,可以关闭激活的环境。在命令行中执行以下命令关闭环境:
conda deactivate
这将会返回到默认的系统环境。
二:赛题任务解读
锂离子电池生产参数调控及生产温度预测挑战赛:赛事链接
2.1 任务要求
- 初赛任务:初赛提供了电炉17个温区的实际生产数据,分别是电炉上部17组加热棒设定温度T1-1 ~ T1-17,电炉下部17组加热棒设定温度T2-1~T2-17,底部17组进气口的设定进气流量V1-V17,选手需要根据提供的数据样本构建模型,预测电炉上下部空间17个测温点的测量温度值。
2.2 数据集介绍
- 初赛为参赛选手提供了5类数据:1)加热棒上部温度设定值、2)加热棒下部温度设定值、3)进气流量、4)上部空间测量温度、5)下部空间测量温度。出于数据安全保证的考虑,所有数据均为脱敏处理后的数据。训练集及测试集每行均含有5类数据。选手需要建立上部加热棒设定温度、下部加热棒设定温度、进气流量与上部空间测量温度、下部空间测量温度之间的模型。
2.3 评估指标
- 初赛考核办法采用测试集各行数据的加热棒上部温度设定值、加热棒下部温度设定值、进气流量3类数据作为输入,选手分别预测上部空间测量温度、下部空间测量温度。将选手预测的上部空间测量温度、下部空间测量温度与测试集数据的测量值进行比较。采用MAE平均绝对误差作为评价指标。
本次比赛为数据挖掘类型的比赛,聚焦于工业场景。本赛题实质上为回归任务,其中会涉及到时序预测相关的知识。
通过电炉空间温度推测产品内部温度,设计烧结过程的温度场和浓度场的最优控制律:
- 任务输入:电炉对应17个温区的实际生产数据,分别是电炉上部17组加热棒设定温度T1-1 ~ T1-17,电炉下部17组加热棒设定温度T2-1~T2-17,底部17组进气口的设定进气流量V1-V17;
- 任务输出:电炉对应17个温区上部空间和下部空间17个测温点的测量温度值。
值得注意的是预测目标为34个,所以需要我们进行34次模型训练和预测。
三:机器学习之 LightGBM
在处理这个问题时,我们主要考虑的是回归预测。一种常规的解决思路是运用机器学习技术,例如 LightGBM 或 XGBoost,或者借助深度学习方法进行实践。当我们选择自行搭建模型的路径时,我们将面临更为复杂的挑战,包括构建模型结构以及对数值数据进行标准化处理。
总的来说,我们需要经过以下步骤来解决本问题:
- 数据预处理
- 切分训练集与验证集
- 训练模型
- 生成最后的预测结果
在实施这些步骤的过程中,我们需要根据模型的性质和数据的特点灵活调整,确保每一步的实施都能最大化模型的预测准确性,从而有效解决这个回归预测问题。
以下是夏令营baseline讲解
更新lightGBM库&解压缩数据
!pip install -U lightgbm
!unzip data/data227148/data.zip //具体的路径
这两个命令需要在具有相应权限的命令行环境中执行,例如终端或命令提示符。如果使用的是其他开发环境,如Jupyter Notebook,则可以在相应的框/单元中执行这些命令。
导入库
# 导入所需要的库
import pandas as pd # 用于处理数据的工具
import lightgbm as lgb # 机器学习模型 LightGBM
from sklearn.metrics import mean_absolute_error # 评分 MAE 的计算函数
from sklearn.model_selection import train_test_split # 拆分训练集与验证集工具
from tqdm import tqdm # 显示循环的进度条工具
数据准备
train_dataset = pd.read_csv("./data/train.csv") # 原始训练数据。
test_dataset = pd.read_csv("./data/test.csv") # 原始测试数据(用于提交)。
submit = pd.DataFrame() # 定义提交的最终数据。
submit["序号"] = test_dataset["序号"] # 对齐测试数据的序号。
MAE_scores = dict() # 定义评分项。
模型训练
pred_labels = list(train_dataset.columns[-34:]) # 需要预测的标签。
train_set, valid_set = train_test_split(train_dataset, test_size=0.2) # 拆分数据集。
训练参数
# 设定 LightGBM 训练参,查阅参数意义:https://lightgbm.readthedocs.io/en/latest/Parameters.html
lgb_params = {
'boosting_type': 'gbdt',
'objective': 'regression',
'metric': 'mae',
'min_child_weight': 5,
'num_leaves': 2 ** 5,
'lambda_l2': 10,
'feature_fraction': 0.8,
'bagging_fraction': 0.8,
'bagging_freq': 4,
'learning_rate': 0.05,
'seed': 2023,
'nthread' : 16,
'verbose' : -1,
}
no_info = lgb.callback.log_evaluation(period=-1) # 禁用训练日志输出。
后续讲解仍在进行
baseline进行修改优化后并跑通,结果可观如下:
参考文章:
datawhale暑期夏令营:datawhale开源项目