导入库
首先,代码导入了需要用到的库,包括 pandas
(用于数据处理和分析),scikit-learn
(机器学习库),rdkit
(化学信息工具)。
读取数据
代码通过使用 pd.read_csv
函数从文件中读取训练集和测试集数据。
使用Morgan分子指纹建模SMILES
此步先要完成特征提取,具体来说,有rxnid,Reactant1,Reactant2,Product,Additive,Solvent,Yield字段。其中:
- rxnid 对数据的id标识,无实际意义
- Reactant1 反应物1
- Reactant2 反应物2
- Product 产物
- Additive 添加剂(包括催化剂catalyst等辅助反应物合成但是不对产物贡献原子的部分)
- Solvent 溶剂
- Yield 产率 其中Reactant1,Reactant2,Product,Additive,Solvent都是由SMILES表示。
这个过程需要调用rdkit的相关模块。然后将Reactant1,Reactant2,Product,Additive,Solvent字段的向量拼接到一起,组成一个更长的向量。
Rdkit:化学信息学中主要的工具,开源。网址:http://www.rdkit.org,支持WIN\MAC\Linux,可以被python、Java、C调用。几乎所有的与化学信息学相关的内容都可以在上面找到。
使用随机森林预测结果
这里直接调用sklearn
的RandomForestRegressor
模块实例化一个随机森林模型,并对n_estimators
等重要参数进行指定。最后使用model.fit(x, y)训练模型。模型保存在本地'./random_forest_model.pkl'
。
sklearn (scikit-learn)
是一个非常广泛使用的开源机器学习库,基于Python,建立在NumPy、SciPy、Pandas和Matplotlib等数据处理和分析的库之上。
它涵盖了几乎所有主流机器学习算法,包括分类、回归、聚类、降维等。API设计亲民,整个使用简单易上手,非常适合作为机器学习入门的工具。 官网:scikit-learn: machine learning in Python — scikit-learn 1.5.1 documentation
在sklearn中,几乎所有的机器学习的流程是:
- 实例化模型(并指定重要参数);
- model.fit(x, y) 训练模型;
适当增加决策树的数量 可以提高结果分数同时保证运行时间不过长
加载模型进行预测,并将保存结果文件到本地
pkl
文件直接使用pickle.load()
加载,然后使用model.predict(x)
进行预测。预测的结果保存为比赛官方指定的文件格式。
最后得到分数