首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RDKit | 基于集成学习(Ensemble learning)预测溶解度

集成学习

集成学习(Ensemble learning)是这样一个过程,按照某种算法生成多个模型,如分类器或者称为专家,再将这些模型按照某种方法组合在一起来解决某个智能计算问题。集成学习主要用来提高模型(分类,预测,函数估计等)的性能,或者用来降低模型选择不当的可能性。集成算法本身是一种监督学习算法,因为它可以被训练然后进行预测,组合的多个模型作为整体代表一个假设(hypothesis)。

集成方法是将几种机器学习技术组合成一个预测模型的元算法,以达到减小方差(bagging)、偏差(boosting)或改进预测(stacking)的效果。

集成学习在各个规模的数据集上都有很好的策略。

  • 数据集大:划分成多个小数据集,学习多个模型进行组合
  • 数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合

集成方法可分为两类

  • 序列集成方法,其中参与训练的基础学习器按照顺序生成(例如 AdaBoost)。序列方法的原理是利用基础学习器之间的依赖关系。通过对之前训练中错误标记的样本赋值较高的权重,可以提高整体的预测效果。
  • 并行集成方法,其中参与训练的基础学习器并行生成(例如 Random Forest)。并行方法的原理是利用基础学习器之间的独立性,通过平均可以显著降低错误。

集成学习法的特点

  1. 将多个分类方法聚集在一起,以提高分类的准确率。
  2. 集成学习法由训练数据构建一组基分类器,然后通过对每个基分类器的预测进行投票来进行分类
  3. 严格来说,集成学习并不算是一种分类器,而是一种分类器结合的方法。
  4. 通常一个集成分类器的分类性能会好于单个分类器
  5. 如果把单个分类器比作一个决策者的话,集成学习的方法就相当于多个决策者共同进行一项决策。

基于集成学习预测溶解度

导入库

代码语言:javascript
复制
from rdkit import Chem
from rdkit.Chem import DataStructs
from rdkit.Chem import AllChem
from rdkit import RDPaths
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem import Draw
from rdkit.Chem import PandasTools
import numpy as np
import pandas as pd
from IPython.display import HTML

载入数据

代码语言:javascript
复制
traindf = PandasTools.LoadSDF('solubility.train.sdf')
testdf = PandasTools.LoadSDF('solubility.test.sdf')
# Chek data
HTML(traindf.head(2).to_html())
 
cls2lab = {'(A) low':0, '(B) medium':1, '(C) high':2}
举报
领券