此笔记为物质科学task1 打卡笔记,task1主要任务是跑通baseline并将结果提交至比赛官网
代码将在魔塔和阿里云modelscope平台上运行。
作者的话:
我是非计算机类的本科学生,受到了同学邀请参加了本次夏令营和比赛。听说这个方向比较适合小白,我也比较感兴趣,就毫不犹豫地加入了🤭。希望能在这次夏令营中学习到一些新的知识和技能吧。下面是对比赛的一些理解以及个人的一些看法(可能不是很成熟🤔)
比赛任务
本次比赛提供在药物合成中常见的多种催化反应实验数据,其中包括反应的底物、包括催化剂在内的反应添加剂、反应溶剂以及反应产物,期待选手通过分析反应数据,利用机器学习、深度学习算法或者大语言模型,建立产率预测模型,从而辅助未知新反应的反应条件筛选。
分析赛题
构建一个能够准确预测碳氮成键反应产率的预测模型。
通过对反应中所包含的反应底物、添加剂、溶剂以及产物进行合理的特征化,运用机器学习模型或者深度学习模型拟合预测反应的产率。
或者利用训练集数据对开源大语言模型进行微调以预测反应的产率。
即为
输入:底物和条件,(SMILES)
输出:产率,(float,0-1之间)
本次学习活动的赛题是一个典型的回归问题,即预测的结果是连续的值。
评价指标
实验真实结果与预测结果$R^2$决定系数来进行评测:
baseline主要的流程如下:
-
导入库:首先,代码导入了需要用到的库,包括
pandas
(用于数据处理和分析),scikit-learn
(机器学习库),rdkit
(化学信息工具)。 -
读取数据:代码通过使用
pd.read_csv
函数从文件中读取训练集和测试集数据。 -
使用Morgan分子指纹建模SMILES:
- 这个过程需要调用rdkit的相关模块。然后将Reactant1,Reactant2,Product,Additive,Solvent字段的向量拼接到一起,组成一个更长的向量。
-
使用随机森林预测结果:
- 这里直接调用sklearn
的RandomForestRegressor
模块实例化一个随机森林模型,并对n_estimators
等重要参数进行指定。最后使用model.fit(x, y)训练模型。模型保存在本地'./random_forest_model.pkl'
。
-
加载模型进行预测,并将保存结果文件到本地:
-
pkl
文件直接使用pickle.load()
加载,然后使用model.predict(x)
进行预测。预测的结果保存为比赛官方指定的文件格式。
以上是基于赛事官网对本次比赛赛题的解释和相关流程,按作者的理解来看就是将反应底物、添加剂、溶剂以及产物进行合理的特征化,通过机器学习和深度学习的方法,预测反应的产率
Task1相关问题及解决办法
1.进入平台后要将代码和赛事数据从本地拖入到魔塔。需要打开终端并使用命令
unzip AI+化学baseline文件包.zip
2.model scope 平台退出实例后不会保存除代码以外的文件,需要及时将重要文件保存到本地。
3.n_estimators为决策树的个数,决策树越多越好,但越多的决策树会带来更大的计算开销,而且后期提升的分数不明显。故不建议设置较多的决策树。