Skip to content

panjianning/DataCastle-Drug-Competition-1th-Place

Repository files navigation

DataCastle 基于人工智能的分子药物筛选 1-th place solution

题目链接

BeScientific

A榜第四: 1.22258
B榜第一: 1.32833

一.代码运行环境及依赖

Python 3.6

Ubuntu 18.04

16G + 内存

需要用到的Python包: numpy, pandas, sklearn, lightgbm, gensim

二.模型

LightGBM

三. 特征

2.1 word2vec特征 (make_w2v.py)

对蛋白质Sequence进行分词,每三个氨基酸视为一个词,一共有20^3 = 8000个词。

【Example】设序列为ABCDEFGHIJK, 设三个氨基酸一个词,该序列可以分为3个句子

i. [‘ABC’, ‘DEF’, ‘GHI’]

ii. [‘BCD’, ‘EFG’, ‘HIJ’]

iii. [‘CDE’, ‘FGH’, ‘IJK’]

所以,每个序列产生三个句子,用所有序列产生的句子训练出词向量。某蛋白质Sequence的w2v特征取为其三个句子中所有词的词向量的和。(发现这题取和比取平均好) 在代码中,word embedding size为128, 所以此时产生了128个特征:

w2v_0, w2v_1, ...., w2v_127

2.2 fingerprint特征 (make_molecule_stat.py)

只是单纯的把fingerprint split开,产生167个Binary feature

2.3 分子的统计特征 (make_molecule_stat.py)

molecule_id在训练集+测试集的出现次数:molecule_count

但实现上,我用了下面的代码去统计


df_aff = pd.concat([df_aff_train,df_aff_test])
df_molecule_count = df_aff.groupby("Molecule_ID",as_index=False).Ki.agg({"molecule_count":"count"})

concat时,df_aff中来自测试集的Ki是missing的,而count操作时不计missing values的,所以,实际上我算的是molecule_id在训练集的出现次数,而测试集的molecule_count全为0...

2.4 蛋白质的统计特征 (make_protein_stat.py)

蛋白质Sequence中氨基酸个数(Sequence长度), 20个氨基酸在Sequence中出现次数,出现频率 一共41个特征:protein_stat_0, protein_stat_1, ...., protein_stat_40

另外,还有个特征:protein_count: protein_id在训练集和测试集的出现次数,实现上和molecule_count发生了同样的错误(这个特征是在lgb.py里加的)

2.5 Stacking特征 (make_stacking_feat.py, make_more_stacking.py)

关于Stacking: 训练集分为五折,各折训练集的该特征通过在其余四折数据上训练ridge得到,预测集的特征为5个ridge对预测集的预测平均值。

ridge_cat特征: 将molecule_id one hot (不是直接One Hot, molecule_id出现次数等于一的,归为了一类),训练ridge

ridge_tfidf特征: 以protein_id的Sequence的tfidf作为特征,训练ridge

ridge_cat_tfidf特征:以one hot的molecule_id和tfidf作为特征,训练ridge

ridge_fp特征: 以fingerprint为特征,训练ridge

ridge_w2v特征:以w2v为特征,训练ridge

ridge_all: 以one hot的molecule_id和tfidf和df_molecule.csv中分子的物化属性(缺失值用均值填充)作为特征,训练ridge

2.6 df_molecule.csv给出的分子的物化属性特征

其它

这个视频 https://www.youtube.com/watch?v=LgLcfZjNF44 有些帮助

About

DataCastle 基于人工智能的分子药物筛选 冠军

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published