比赛用到的库
-
numpy:提供(多维)数组操作
-
pandas:提供数据结构、数据分析
-
catboost:用于机器学习的库,特别是分类和回归任务
-
sklearn.model_selection:包含模型选择的多种方法,如交叉验证
-
sklearn.metrics:包含评估模型性能的多种指标,提供如accuracy_score这样的方法
-
sklearn.feature_extraction.text:提供将文本转换为特征向量的TF-idf向量化器
-
rdkit:化学信息学和机器学习软件,处理化学结构
-
tqdm:用于在长循环中添加进度条的库
-
sys:与Python解释器密切相关的模块和由解释器使用或维护的变量和函数
-
os:提供与操作系统交互的功能
-
gc:垃圾收集器接口:用于手动标记对象为可删除
-
re:正则表达式库,用于字符串搜索和替换
-
argparse:用于编写用户友好的命令行接口
-
warnings:用于发出警告,或忽略警告。
使用到的关键的库文档链接:
numpy:NumPy 参考 — NumPy v2.0 手册
pandas:API reference — pandas 2.2.2 documentation (pydata.org)
catboost:CatBoost | CatBoost
sklearn:API Reference — scikit-learn 1.5.1 documentation
rdkit:RDKit中文教程 — RDKit 中文教程 2020.09 文档 (chenzhaoqiang.com)
sys:sys — System-specific parameters and functions — Python 3.12.4 documentation
库的导入
import numpy as np
import pandas as pd
from catboost import CatBoostClassifier
from sklearn.model_selection import StratifiedKFold, KFold, GroupKFold
from sklearn.metrics import f1_score
from rdkit import Chem
from rdkit.Chem import Descriptors
from sklearn.feature_extraction.text import TfidfVectorizer
import tqdm, sys, os, gc, re, argparse, warnings
warnings.filterwarnings('ignore') # 忽略警告
数据预处理
train = pd.read_excel('./dataset-new/traindata-new.xlsx')
test = pd.read_excel('./dataset-new/testdata-new.xlsx')
# test数据不包含 DC50 (nM) 和 Dmax (%)
train = train.drop(['DC50 (nM)', 'Dmax (%)'], axis=1)
# 定义了一个空列表drop_cols,用于存储在测试数据集中非空值小于10个的列名。
drop_cols = []
for f in test.columns:
if test[f].notnull().sum() < 10:
drop_cols.append(f)
# 使用drop方法从训练集和测试集中删除了这些列,以避免在后续的分析或建模中使用这些包含大量缺失值的列
train = train.drop(drop_cols, axis=1)
test = test.drop(drop_cols, axis=1)
# 使用pd.concat将清洗后的训练集和测试集合并成一个名为data的DataFrame,便于进行统一的特征工程处理
data = pd.concat([train, test], axis=0, ignore_index=True)
cols = data.columns[2:</