赛题
在当今科技日新月异的时代,人工智能(AI)技术正以前所未有的深度和广度渗透到科研领域,特别是在化学及药物研发中展现出了巨大潜力。精准预测分子性质有助于高效筛选出具有优异性能的候选药物。以PROTACs为例,它是一种三元复合物由目标蛋白配体、linker、E3连接酶配体组成,靶向降解目标蛋白质。本次大赛聚焦于运用先进的人工智能算法预测其降解效能,旨在激发参赛者创新思维,推动AI技术与化学生物学的深度融合,进一步提升药物研发效率与成功率,为人类健康事业贡献智慧力量。通过此次大赛,我们期待见证并孵化出更多精准、高效的分子性质预测模型,共同开启药物发现的新纪元。
赛题分析
【训练分子性质分类预测模型】
运用深度学习、强化学习或更加优秀人工智能的方法预测PROTACs的降解能力,
分类为 降解能力较差/降解能力好 两种结论
评价指标
本次竞赛的评价标准采用f1_score,分数越高,效果越好
处理流程
在解决机器学习问题时,一般会遵循以下流程:
思考:这里为什么选择机器学习算法?为什么不考虑深度学习?
在许多机器学习问题中,特征工程的重要性不容忽视。如果特征工程能够充分捕捉数据的关键特征,那么机器学习算法也能够表现很好。深度学习在某种程度上可以自动学习特征,但对于特定问题,手动设计特征可能会更有效。
思考:这里从逻辑回归和决策树中选择,哪一个模型更加合适?
-
决策树能够处理非线性关系,并且可以自动捕获特征之间的交互作用。
-
它可以生成可解释的规则,有助于理解模型如何做出决策。
-
决策树能够处理不同类型的特征,包括分类和数值型。
代码:
# 1. 导入需要用到的相关库
# 导入 pandas 库,用于数据处理和分析
import pandas as pd
# 导入 numpy 库,用于科学计算和多维数组操作
import numpy as np
# 从 lightgbm 模块中导入 LGBMClassifier 类
from lightgbm import LGBMClassifier
# 2. 读取训练集和测试集
# 使用 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')
# 3 特征工程
# 3.1 test数据不包含 DC50 (nM) 和 Dmax (%),将train数据中的DC50 (nM) 和 Dmax (%)删除
train = train.drop(['DC50 (nM)', 'Dmax (%)'], axis=1)
# 3.2 将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()
# 4. 加载决策树模型进行训练
model = LGBMClassifier(verbosity=-1)
model.fit(train.iloc[:, 2:].values, train['Label'])
pred = model.predict(test.iloc[:, 1:].values, )
# 5. 保存结果文件到本地
pd.DataFrame(
{
'uuid': test['uuid'],
'Label': pred
}
).to_csv('submit.csv', index=None)
处理流程
-
导入库:首先,导入需要用到的库,包括
pandas
(用于数据处理和分析)和LGBMClassifier
(决策树分类器)等。 -
读取数据:代码通过使用
pd.read_excel
函数从文件中读取训练集和测试集数据,并将其存储在traindata-new.xlsx
和testdata-new.xlsx
两个数据框中。 -
特征工程:
- test
数据不包含 DC50 (nM)
和 Dmax (%)
,将train
数据中的 DC50 (nM)
和 Dmax (%)
删除。
4.LGB树模型训练和预测:
- 创建了一个 LGBMClassifier
的实例,即LGB分类器。
- 使用 fit
函数对训练集中的特征和目标进行拟合,训练了决策树模型。
- 对测试集使用已训练的模型进行预测,得到预测结果。
- 将预测结果和相应的 uuid
组成一个DataFrame,并将其保存到 submit.csv
文件中。