分子性质预测挑战赛(baseline)

task1零基础入门AI(机器学习)竞赛学习笔记

学习简介

  • 活动: Datawhale 2024 AI夏令营第一期
  • 实践项目: 讯飞开放平台“分子性质预测挑战赛”
  • 目标: 入门机器学习算法,实践并冲刺夏令营TOP10

学习时间

  • 周期: 2024年7月1日至7月7日

学习攻略

  • 速通指南: 5分钟内完成“分子性质预测挑战赛”速通体验
  • 学习规划: 深入学习,写笔记打卡,提升排名

Step-by-step Guide

Step 1: 报名赛事

Step 2: 体验Baseline

  • 项目链接: 百度AI Studio
  • 指南: 登录账号,运行项目,启动环境,运行全部Cell

Step 3: 提交文件

  • 官网提交: 使用submit.csv文件提交结果

学习加餐

  • 赛题背景: 运用AI预测分子性质,提高药物研发效率
  • 赛事任务: 预测PROTACs降解能力,二分类问题
  • 评价指标: f1_score

解题思路

  • 特征工程: 删除不相关特征,处理分类特征
  • 模型选择: 决策树或逻辑回归
  • 模型训练: 使用LGBMClassifier训练模型
  • 结果预测: 对测试集进行预测,生成submit.csv

代码详解

  1. 导入库: pandas, numpy, LGBMClassifier

  2. 读取数据: 从Excel文件读取训练集和测试集

  3. 特征工程

    :

    • 删除特征:DC50 (nM), Dmax (%)
    • 目标编码:处理object类型数据
  4. 模型训练: LGBMClassifier

  5. 预测与保存: 预测测试集,保存结果至CSV

总结

  • 本次学习体验了从报名到模型训练、预测、提交的完整流程
  • 学习了特征工程和模型训练的基础
  • 理解了决策树模型在机器学习中的应用

task2赛题深入解析

赛题背景

  • 人工智能在化学和药物研发领域的重要性被强调。
  • PROTACs技术在靶向降解目标蛋白质方面的潜力被指出。

赛题任务

  • 使用提供的demo数据集,包含多个与PROTACs降解能力相关的字段。
  • 允许通过数据增强或自行搜集数据来扩充数据集。
  • 自行划分数据集用于训练和验证模型。

数据字段理解

数据集包含多个字段,例如:

  • UUID:唯一标识符。
  • Label:降解能力的标签,0表示降解能力较差,1表示降解能力好。
  • Uniprot:蛋白质数据库。
  • Target:目标蛋白。
  • E3 ligase:E3连接酶。
  • PDB:蛋白质数据银行。
  • Name:化合物名称。
  • Smiles:表示分子结构的字符串格式。
  • DC50、Dmax等:降解能力相关的数值指标。
  • IC50、EC50等:与分子物理化学性质相关的字段。

预测目标

  • 预测PROTACs的降解能力,即预测Label字段的值。
  • 根据DC50和Dmax的值来判断降解能力的好坏。

参考资料

  1. 药物化学与PROTACs相关文献:

    • “Targeted Protein Degradation by Small Molecules”
    • “The Role of E3 Ligases in Targeted Protein Degradation”
  2. 生物信息学与化学信息学资源:

RDKit库使用示例

from rdkit import Chem
from rdkit.Chem import AllChem, Draw

# SMILES字符串
smiles = "NC1=NC=NC2=C1C(C1=CC=C(OC3=CC=CC=C3)C=C1)=NN2[C@@H]1CCCN(C(=O)C2=CN(CCOCCOCCOCCCC3=CC=CC4=C3CN(C3CCC(=O)NC3=O)C4=O)N=N2)C1"

# 将SMILES转换为分子对象
mol = Chem.MolFromSmiles(smiles)

# 检查分子是否有效
if mol is None:
    print("The SMILES string is invalid.")
else:
    print("The molecule was parsed successfully.")

    # 绘制分子结构
    molDrawer = Draw.MolToMPL(mol)
    molDrawer.show()

task3进阶Baseline详解

导入模块

用于数据分析、机器学习建模和化学信息学所需的Python库。

  • numpy: 多维数组和操作。
  • pandas: 数据结构和数据分析工具。
  • catboost: 机器学习库,适合分类和回归。
  • sklearn.model_selection: 模型选择方法,如交叉验证。
  • sklearn.metrics: 模型性能评估指标。
  • rdkit: 化学信息学和机器学习软件。
  • sklearn.feature_extraction.text: 文本转换为特征向量的Tf-idf向量化器。
  • tqdm: 进度条库。
  • sys, os, gc: 系统相关模块。
  • re: 正则表达式库。
  • argparse: 命令行接口库。
  • warnings: 警告信息库。
# 示例代码
import numpy as np
import pandas as pd
from catboost import CatBoostClassifier
# ... 其他库的导入
warnings.filterwarnings('ignore')

数据预处理

  • 读取训练和测试数据集。
  • 删除包含大量缺失值的列。
  • 合并训练集和测试集以进行特征工程。

特征工程

  • 转换SMILES字符串为分子对象,并计算TF-IDF特征。
  • 对分类特征进行自然数编码。
  • 筛选特征和标签,准备训练和测试集。

模型训练与预测

  • 定义cv_model函数进行交叉验证训练和测试集预测。
  • 使用CatBoostClassifier训练模型。
  • 生成提交文件。

附加学习

TF-IDF学习

  • 用于评估词条在文档中的重要性。
  • 基本使用包括文本预处理、分词、计算TF和IDF、TF-IDF矩阵。

交叉验证学习

  • 评估模型泛化能力,减少过拟合风险。
  • 主要类型包括K-折、留一法、分层和时间序列交叉验证。

CatBoost学习

  • 由Yandex开发的梯度提升库,擅长处理分类和回归任务。
  • 核心特点包括自动处理类别特征、缺失值,提升算法,模型可解释性。

示例代码

以下是使用CatBoostClassifier和交叉验证的示例代码。

from catboost import CatBoostClassifier
from sklearn.model_selection import KFold

def cv_model(clf, train_x, train_y, test_x, clf_name, seed=2022):
    # ... 交叉验证逻辑
    return train, test

# 使用cv_model函数训练CatBoost模型
cat_train, cat_test = cv_model(CatBoostClassifier, x_train, y_train, x_test, "cat")
# ... 生成提交文件的逻辑

注意事项

  • 确保安装CatBoost库。
  • 根据问题调整CatBoost参数。
  • 注意模型训练的速度和内存消耗。
  • 30
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值