task1零基础入门AI(机器学习)竞赛学习笔记
学习简介
- 活动: Datawhale 2024 AI夏令营第一期
- 实践项目: 讯飞开放平台“分子性质预测挑战赛”
- 目标: 入门机器学习算法,实践并冲刺夏令营TOP10
学习时间
- 周期: 2024年7月1日至7月7日
学习攻略
- 速通指南: 5分钟内完成“分子性质预测挑战赛”速通体验
- 学习规划: 深入学习,写笔记打卡,提升排名
Step-by-step Guide
Step 1: 报名赛事
- 赛事链接: iFLYTEK A.I.开发者大赛
Step 2: 体验Baseline
- 项目链接: 百度AI Studio
- 指南: 登录账号,运行项目,启动环境,运行全部Cell
Step 3: 提交文件
- 官网提交: 使用
submit.csv
文件提交结果
学习加餐
- 赛题背景: 运用AI预测分子性质,提高药物研发效率
- 赛事任务: 预测PROTACs降解能力,二分类问题
- 评价指标: f1_score
解题思路
- 特征工程: 删除不相关特征,处理分类特征
- 模型选择: 决策树或逻辑回归
- 模型训练: 使用LGBMClassifier训练模型
- 结果预测: 对测试集进行预测,生成
submit.csv
代码详解
-
导入库: pandas, numpy, LGBMClassifier
-
读取数据: 从Excel文件读取训练集和测试集
-
特征工程
:
- 删除特征:DC50 (nM), Dmax (%)
- 目标编码:处理object类型数据
-
模型训练: LGBMClassifier
-
预测与保存: 预测测试集,保存结果至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的值来判断降解能力的好坏。
参考资料
-
药物化学与PROTACs相关文献:
- “Targeted Protein Degradation by Small Molecules”
- “The Role of E3 Ligases in Targeted Protein Degradation”
-
生物信息学与化学信息学资源:
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参数。
- 注意模型训练的速度和内存消耗。