Task1
一、跑通baseline
- 安装lightgbm库和openpyxl库。
其中,LightGBM 主要用于高效、快速的梯度提升树模型的训练,适用于大规模数据集和高维数据。Openpyxl 主要用于处理 Excel 文件,包括读取、写入和格式化操作,适用于对 Excel 文件的各种操作需求。
!pip install lightgbm openpyxl
- 导入需要使用的库
# 导入 pandas 库,用于数据处理和分析
import pandas as pd
# 导入 numpy 库,用于科学计算和多维数组操作
import numpy as np
# 从 lightgbm 模块中导入 LGBMClassifier 类
from lightgbm import LGBMClassifier
- 读取数据(包括训练集和测试集)
# 使用 read_excel() 函数从文件中读取训练集数据,文件名为 'traindata-new.xlsx'
train = pd.read_excel('./data/data280993/traindata-new.xlsx')
# 使用 read_excel() 函数从文件中读取测试集数据,文件名为 'testdata-new.xlsx'
test = pd.read_excel('./data/data280993/testdata-new.xlsx')
- 特征工程(这点非常重要)
主要是处理数据,从原始数据中提取出有用的特征,以提升模型的性能。特征工程包括特征选择、特征提取、特征转换和特征创建等多个方面。
# 测试集中不包含 DC50 (nM) 和 Dmax (%),将训练集数据中的DC50 (nM) 和 Dmax (%)删除
train = train.drop(['DC50 (nM)', 'Dmax (%)'], axis=1)
# 将object类型的数据进行目标编码处理
for col in train.columns[2:]:
if train[col].dtype == object or test[col].dtype == object:
train[col] = train[col].isnull()
test[col] = test[col].isnull()
- 加载模型并训练模型
# 加载决策树模型进行训练
model = LGBMClassifier(verbosity=-1)
model.fit(train.iloc[:, 2:].values, train['Label'])
pred = model.predict(test.iloc[:, 1:].values, )
- 保存模型预测结果
pd.DataFrame(
{
'uuid': test['uuid'],
'Label': pred
}
).to_csv('submit.csv', index=None)
:::warning
最重要的是理解代码,包括导入的库以及作用、整个代码的流程、数据处理的过程、最后结果的保存。
:::
二、改进baseline
想法:
- 填补缺失值:使用SimpleImputer填补缺失值,策略为使用中位数填补。
- 数据标准化/归一化:使用StandardScaler标准化数据,使得每个特征具有0均值和1标准差。
- 更多参数调优:增加了num_leaves参数,进一步调整模型复杂度。
- 更高级的交叉验证策略:使用StratifiedKFold进行分层K折交叉验证,确保每个折中类的分布与原始数据集一致。
三、感悟等
- 要对比赛内容进行深入理解。
- 要对改进的想法进行尝试。
这个夏令营不简单 #AI夏令营 #Datawhale #夏令营