#AI夏令营 #Datawhale #夏令营
一、跑通baseline
本次baseline由Datawhale提供,给予了十分详细的注释以及运行流程,因此整个运行体验十分丝滑。 整个代码流程如下:
- 导入需要的库:pandas、numpy和lightgbm。
- 读取训练集和测试集的数据。
- 特征工程:删除训练集中的DC50 (nM) 和 Dmax (%),并对object类型的数据进行目标编码处理。
- 使用lightgbm模型进行训练。
- 将预测结果保存到本地文件。
二、构思idea,改进baseline
- 在特征工程部分使用
LabelEncoder对类别型特征进行目标编码,确保训练集和测试集的一致性。 - 加入模型评估并使用了
交叉验证评估模型的性能,这样可以了解模型在不同子集上的表现。
三、 错误记录
在上述改进中发现会出现许多错误:
Q: LabelEncoder在transform过程中遇到了在训练集中未出现过的类别标签。LabelEncoder在fit_transform时只学习了训练集中出现的类别,因此在transform测试集时,如果遇到训练集中未见过的类别,抛出了ValueError。
A:使用OneHotEncoder: 如果类别特征的类别标签在训练集和测试集中都可能出现,建议使用OneHotEncoder,它能处理未见过的类别,因为它为每个类别创建一个独立的二进制特征。
在baseline中test数据不包含 DC50 (nM) 和 Dmax (%),将train数据中的DC50 (nM) 和 Dmax (%)删除在本次改进中我们使用以下方式首先检查train数据中是否包含DC50 (nM)和Dmax (%)列,如果存在,则从train数据中移除这些列,以保证后续处理的一致性。
# 确保训练集和测试集列的一致性 # 从训练集中移除不在测试集中的列(如果它们存在的话)
if 'DC50 (nM)' in train.columns and 'Dmax (%)' in train.columns:
train = train.drop(['DC50 (nM)', 'Dmax (%)'], axis=1)
# 接下来继续进行特征工程、模型训练等步骤...
这是第一次提交记录,希望在下次能够提高分数!
这个夏令营不简单 #AI夏令营 #Datawhale #夏令营