【Datawhale AI 夏令营】Datawhale AI 夏令营————baseline代码学习(催化反应产率预测)

Task 1 笔记

目标:跑通 baseline

拓展:对提高分数的思考

第一步操作:导入库

import pickle
import pandas as pd
from tqdm import tqdm
from sklearn.ensemble import RandomForestRegressor
from rdkit.Chem import rdMolDescriptors
from rdkit import RDLogger,Chem
import numpy as np

在英语中 pickle 名词是泡菜。可以理解为把东西腌起来保存成文件。

而python的pickle模块实现了基本的数据序列化和反序列化

接下来涉及到特征提取的部分内容,了解之后才能进一步操作

特征提取:

官方发布的数据是对化学分子的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表示。

现有可提取特征:

SMILES 

SMILES,是一种将化学分子用ASCII字符表示的方法。全称是Simplified Molecular-Input Line-Entry System,

SMILES包含的信息可能与一些扩展的源数据表相同,SMILES更适用的主要原因是它是一种语言结构,而不是计算机数据结构。 SMILES是一种真正的语言,虽然只有简单的词汇(原子和键符号)和少数语法规则。 SMILES结构表示可以反过来用作其他语言词汇表中的“word”,用于存储化学信息(化学品信息)和化学信息。

Morgan fingerprint 

摩根分子指纹(Morgan Fingerprints),是一种圆形指纹,也属于拓扑型指纹,是通过对标准的摩根算法进行改造后得到。可以大致等同于扩展连通性指纹(Extended-Connectivity Fingerprints,ECFPs)。这类指纹有诸多优点,例如计算速度快、没有经过预定义(可以表示无穷多种不同的分子特征)、可以包含手性信息、指纹中的每个元素代表一种特定子结构、可以方便地进行分析和解释、可以根据不同的需要进行相应的修改等。

而此处它是位向量(bit ector)形式的特征,即由0,1组成的向量。

RDKit 

化学信息学中主要的工具,开源。支持WIN\MAC\Linux,可以被python、Java、C调用。几乎所有的与化学信息学相关的内容都可以在上面找到

第二步:将数据进行摩根指纹的位向量转化。

第三步:使用随机森林进行建模

参数解释:

  • n_estimators=10: 决策树的个数,越多越好;但是越多意味着计算开销越大;
  • max_depth: (default=None)设置树的最大深度,默认为None;
  • min_samples_split: 根据属性划分节点时,最少的样本数;
  • min_samples_leaf: 叶子节点最少的样本数;
  • n_jobs=1: 并行job个数,-1表示使用所有cpu进行并行计算。

第四步:得出submit文件

拓展:对提高结果分数的思考

要提升随机森林的分数,可以尝试以下方法:

  1. 增加决策树的个数:随机森林算法通过综合多个决策树的结果来进行预测,因此增加决策树的数量可以提升算法的准确性。

  2. 调整决策树的深度:通过调整决策树的深度,可以控制模型的复杂度和拟合能力,从而提升算法的性能。

  3. 根据属性划分节点时,最少的样本数

此处我对参数进行了调整,观察生成的结果分数变化

原始数据分数为0.1896

增加决策树的数量到300后,分数变化不大,为0.2048

可推测增加决策树数量对结果分数无影响或影响较小

我再增加决策树的深度到20之后,分数变化较大,增加到了0.2597

发现增加决策树的深度可以增加分数,将决策树的深度增加到40,结果为0.2768

可推测增加决策树的深度可以增加分数

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值