导入库
读取数据
代码通过使用 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 (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) 训练模型;
随机森林
参数解释:
- n_estimators=10: 决策树的个数,越多越好;但是越多意味着计算开销越大;
- max_depth: (default=None)设置树的最大深度,默认为None;
- min_samples_split: 根据属性划分节点时,最少的样本数;
- min_samples_leaf: 叶子节点最少的样本数;
- n_jobs=1: 并行job个数,-1表示使用所有cpu进行并行计算。