分子AI预测赛笔记TASK3

一、跑通baseline

在下跑通baseline的关键在于以下两点:

1.在官网下载数据集存放在方便调用的文件夹中,我一般放在桌面。

2.针对代码中的相关库的安装以及在最开始读取csv文件的相关路径更改。

在baseline中最大的收获毫无疑问是TFIDF与CATBOOST。

TFIDF技术作为一种用于信息检索与文本挖掘的常用加权技术,它的主要思想是:如果某个词语在一篇文章中出现的频率高(Term Frequency,TF),并且在其他文章中很少出现(Inverse Document Frequency,IDF),则认为这个词语具有很好的类别区分能力,对这篇文章的内容有很好的指示作用。

简而言之,一种自动检索并计算特征值权重的技术。

简单的代码应用:

# 将SMILES转换为分子对象列表,并转换为SMILES字符串列表

data['smiles_list'] = data['Smiles'].apply(lambda x:[Chem.MolToSmiles(mol, isomericSmiles=True) for mol in [Chem.MolFromSmiles(x)]])

data['smiles_list'] = data['smiles_list'].map(lambda x: ' '.join(x))

# 使用TfidfVectorizer计算TF-IDF

tfidf = TfidfVectorizer(max_df = 0.9, min_df = 1, sublinear_tf = True) res = tfidf.fit_transform(data['smiles_list'])

# 将结果转为dataframe格式

tfidf_df = pd.DataFrame(res.toarray()) tfidf_df.columns = [f'smiles_tfidf_{i}' for i in range(tfidf_df.shape[1])]

# 按列合并到data数据

data = pd.concat([data, tfidf_df], axis=1)

至于CATBOOST,就是利用其中包含的CatBoostClassifierCatBoostRegressor进行分类或预测的相关机器学习任务。简单代码介绍:

from catboost import CatBoostClassifier, Pool from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score 假设X是特征数据,y是目标变量 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) 创建CatBoost模型 model = CatBoostClassifier( iterations=100, learning_rate=0.1, depth=6, loss_function='Logloss', random_seed=42, verbose=False ) 训练模型 model.fit(X_train, y_train) 预测测试数据 y_pred = model.predict(X_test) 评估模型 accuracy = accuracy_score(y_test, y_pred) print(f'Accuracy: {accuracy:.2f}')

重要的是CatBoostClassifier中的相关参数的含义和设置。,则上文加粗部分。

二、构思idea,改进baseline

对比之前的baseline,本次采用的baseline有两大重要改变,也是前文提到的重要收获,TFIDF技术和CATBOOST,二者相辅相成,在进行CATBOOST调用时,TFIDF是建造CATBoost相关的分类器模型的前提。而CatBoost使用梯度提升决策树(GBDT)作为基学习器,使用基于GPU和CPU的并行计算,可以高效处理大规模数据集。

提起优化基于GBDT的baseline,我们想到以下几个重点:1.调整参数。2.使用GPU调动更好的资源。3.在数据预处理上继续下功夫。

针对第一种方法,我们可调超参数包括学习率(learning_rate)、迭代次数(iterations)、树的深度(depth)、L2正则化参数(l2_leaf_reg)并观察score_mean判断修改后模型的性能。

最终得到一定优化结果。根据F1_score的判分标准也提升部分。

对于第二个方法,受限于电脑GPU配置,跑不了,后面开个虚拟机在LINUX试一下好像说可以。

对于第三个,本次BASELINE所采用的TFIDF技术是数据预处理的重要板块,想要对BASELINE进行优化,对TFIDF进行优化是必须的。对于TFIDF优化最简单的也是调整其相关参数。

调整的参数

一些输出结果

三、学习记录

通过本次学习,最大的收获是学会使用CATBOOST库进行机器学习任务。且学会利用网格模型等模型对参数进行调整。此外,也收获到了一个数据处理赋权的好东西TFIDF。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值