实验室数据科学竞赛计划与反馈要求

科技   2024-06-26 15:46   河北  

为了加强实验室同学们的 编程/数据处理 能力,我们计划每月参与至少一次 编程/数据科学类 竞赛,以竞赛促进学习。本月,我们将参加 上海市青少年算法竞赛的6月赛(建议从丙组开始挑战)/讯飞算法挑战大赛。比赛结束后,请同学们向我反馈你们的成绩,以便我们进行后续的分析和学习。

比赛介绍

  • 赛题名称:分子性质AI预测挑战赛
  • 赛题类型:生命科学、数据挖掘
  • 赛题任务:预测PROTACs的降解能力

赛题链接:https://challenge.xfyun.cn/topic/info?type=molecular-properties&ch=dw24_8Yoyn0

参加步骤

第一步:报名参赛

第二步:下载赛题数据

第三步:阅读赛题

第四步:建立模型编写代码

一个简单的baseline实例。

import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_predict
from sklearn.metrics import f1_score

train = pd.read_excel('traindata-new.xlsx')
test = pd.read_excel('testdata-new.xlsx')
print(train.shape)
print(test.shape)

'''
(351, 90)
(353, 87)
'''


print([x for x in train.columns if x not in test.columns])

'''
['Label', 'DC50 (nM)', 'Dmax (%)']
训练集比测试集多3个特征,也就是多了标签部分
'''

train = train.drop(['DC50 (nM)''Dmax (%)'], axis=1)
for col in train.columns[1:]:
    if train[col].dtype == object:
        print(col, train[col].nunique(), test[col].nunique())

'''
查看各个特征在不同数据集中的分布
'''


for col in train.columns[2:]:
    if train[col].dtype == object or test[col].dtype == object:
        train[col] = train[col].isnull()
        test[col] = test[col].isnull()
'''
对类别进行编码
'''


pred = cross_val_predict(
    DecisionTreeClassifier(),
    train.iloc[:, 2:].fillna(0),
    train['Label']
)
print(f1_score(train['Label'], pred))

'''
决策树结果:0.6698795180722891
'''


pred = cross_val_predict(
    RandomForestClassifier(),
    train.iloc[:, 2:].fillna(0),
    train['Label']
)
print(f1_score(train['Label'], pred))

'''
随机森林结果:0.7896995708154506
'''


model = RandomForestClassifier()
model.fit(train.iloc[:, 2:].fillna(0).values, train['Label'])
pred = model.predict(test.iloc[:, 1:].fillna(0).values, )
print(pred)

'''
选择随机森林为最终模型
'''


pd.DataFrame(
    {
        'uuid': test['uuid'],
        'Label': pred
    }
).to_csv('submit.csv', index=None)

第五步:提交结果

第六步:查看成绩


组队学习
分享组队学习的点点滴滴,和学习者一起成长!
 最新文章