2024Datawhale-AI夏令营——机器学习挑战赛——学习笔记

#ai夏令营#datawhale#夏令营

Day1:入门级demo运行

这个其实比较简单,按照操作来做就行了,特征工程和调参暂时都没有做,后续的才是重头戏。

Day2:正式比赛开始

赛题:数据挖掘赛道——利用机器学习方法根据给定的特征判断PROTACs的降解能力

这里我想分几个板块进行讲解我个人的一个学习过程和心得吧:

PartA:数据处理

由于啊,看过这数据的人都知道,这数据的质量实在是说不上什么高质量,不仅缺漏,而且是大量缺漏数据,我们需要将过度缺漏数据的特征进行删除,清洗一下数据,这里参考代码用非空值是否小于10个来判断(这个比例应该单纯就是经验之谈了),也就是这一个特征参数如果连10个数据值都没有,那就删了吧,这能分析个啥呢?

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:]

数据预处理之后,开始最关键的特征工程

PartB:特征工程

特征工程这里主要对本项目中的特殊的对象,分子化合物的表达形式分子化学式进行了解码分析,这个比较简单粗暴,就是利用rdkit库里的chem包将分子化学式转为字符串列表,然后再转为单个字符串,最后通过TF-IDF计算来将这些字符串转换为数值向量(这也是词级别向量化的操作之一,其他的还有one-hot编码等)

这部分很明显是可以通过考虑分子化合物的特殊情况,来考虑用哪种词解码方式,可以最大限度的保留分子化学式原本包含的信息的情况下转为数值向量。(待提升ing)

这里还有一步是自然数编码,有点没理解这个自然数编码的意义和作用,后续从这补上

# 自然数编码
def label_encode(series):unique = list(series.unique())return series.map(dict(zip(unique, range(series.nunique()))))for col in cols:if data[col].dtype == 'object':data[col]  = label_encode(data[col])data.to_csv('E:/2024年项目资料/2024Datawhale AI夏令营---机器学习挑战赛/进阶baseline/data/data-nature-coding.csv')train = data[data.Label.notnull()].reset_index(drop=True)
test = data[data.Label.isnull()].reset_index(drop=True)

特征工程整合源码如下:

#>>>>>>特征工程
# 将SMILES转换为分子对象列表,并转换为SMILES字符串列表
# 然后保存看看,他处理成啥样了
data['smiles_list'] = data['Smiles'].apply(lambda x:[Chem.MolToSmiles(mol, isomericSmiles=True) for mol in [Chem.MolFromSmiles(x)]])
data['smiles_list'].to_csv("E:/2024年项目资料/2024Datawhale AI夏令营---机器学习挑战赛/进阶baseline/data/smiles_list1.csv")
data['smiles_list'] = data['smiles_list'].map(lambda x: ' '.join(x))  
data['smiles_list'].to_csv("E:/2024年项目资料/2024Datawhale AI夏令营---机器学习挑战赛/进阶baseline/data/smiles_list2.csv")# 使用TfidfVectorizer计算TF-IDF
# TF-IDF其实就是词级别的向量化操作之一
# 把这些词级别的字符串解码成文本向量
# 这块还是要学习一下:https://blog.csdn.net/weixin_36488653/article/details/136720789
tfidf = TfidfVectorizer(max_df = 0.9, min_df = 5, 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])]
tfidf_df.to_csv('E:/2024年项目资料/2024Datawhale AI夏令营---机器学习挑战赛/进阶baseline/data/tfidf_df.csv')# 按列合并到data数据
data = pd.concat([data, tfidf_df], axis=1)# 自然数编码
def label_encode(series):unique = list(series.unique())return series.map(dict(zip(unique, range(series.nunique()))))for col in cols:if data[col].dtype == 'object':data[col]  = label_encode(data[col])train = data[data.Label.notnull()].reset_index(drop=True)
test = data[data.Label.isnull()].reset_index(drop=True)# 特征筛选
features = [f for f in train.columns if f not in ['uuid','Label','smiles_list']]# 构建训练集和测试集
x_train = train[features]
x_test = test[features]# 训练集标签
y_train = train['Label'].astype(int)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【EFK】efk 8收集docker容器日志测试

前言 目前&#xff0c;efk 全家桶已经更新到版本8 了&#xff0c;本章节我们使用8版本的elk搭建日志收集系统&#xff0c;了解它的配置运行过程&#xff0c;方便以后在更复杂的环境中更好的使用。 版本默认就是8最新的&#xff0c;也可以自己指定其他8的版本 elasticsearch: …

vs 远程链接ssh 开发 简单实验

1.概要 动态编译语言&#xff0c;跨平台必须做分别的编译&#xff0c;比如linux和windows。如何再windows环境下开发编译出linux平台的程序呢&#xff0c;vs支持远程链接编辑&#xff0c;就是再vs中写代码&#xff0c;但是编译确是链接远程的环境编译的。 2.环境准备 2.1 vs…

R语言学习,入门

我是一名6年开发经验的程序员&#xff0c;后端&#xff0c;大数据&#xff0c;前端都会。 现在加入了医疗行业&#xff0c;要做数据分析&#xff0c;前同事的实验室生信专业的&#xff0c;用的是R语言&#xff0c;为了跑通他的程序。就来学一下吧&#xff0c;看了一下好像挺简…

关于软件本地化,您应该了解什么?

软件本地化是调整软件应用程序以满足目标市场的语言、文化和技术要求的过程。它不仅仅涉及翻译用户界面&#xff1b;它包含一系列活动&#xff0c;以确保软件在目标语言环境中可用且相关。以下是您应该了解的有关软件本地化的一些关键方面&#xff1a; 了解范围 软件本地化是…

水利水电安全员C证考试题库资料,2024年全国考试通用!

1.安全生产民事责任&#xff0c;是指责任主体违反安全生产法律规定造成&#xff08;&#xff09;&#xff0c;由人民法院依照民事法律强制其行使民事赔偿的一种法律责任。民事责任追究的目的是为了最大限度的维护当事人受到民事损害时享有获得民事赔偿的权利。 A.民事损伤 B.…

针对SVN、GIT版本管理工具进行源代码加密保护

针对SVN、GIT版本管理工具进行源代码加密保护 在软件开发过程中&#xff0c;版本管理工具如SVN和GIT是不可或缺的组成部分&#xff0c;它们帮助团队管理源代码的变更和版本。然而&#xff0c;这些工具也面临着源代码泄露的安全风险。如果不针对数据进行加密保护&#xff0c;很…

如何从腾讯云迁移到AWS

随着跨境出海潮不断扩大&#xff0c;企业越来越意识到将工作负载迁移到海外节点的必要性&#xff0c;以获取更多功能、灵活性和性能。然而&#xff0c;顺利迁移业务主机并确保业务稳定访问是一项具有挑战性的任务。在此挑战中&#xff0c;借助AWS迁移工具和迁移流程的强大支持&…

如何检查购买的Facebook账号优劣?

Facebook 是全球最受欢迎的社交网络之一,为品牌广告提供了巨大的潜力。许多公司和营销人员使用 Facebook 来推广他们的产品和服务&#xff0c;经常会购买账号。当然也分出了很多账号&#xff0c;比如个人号&#xff0c;BM号&#xff0c;广告号&#xff0c;小黑号等等。 但是,有…

实现点击Button,改变背景颜色(多个按钮互斥显示)

一 功能描述 在界面中&#xff0c;有一组button&#xff0c;现在需要实现下面功能&#xff1a;点击其中一个&#xff0c;改变被点击button的背景颜色。当点击下一个之后&#xff0c;之前点击过的按钮背景颜色还原&#xff0c;当前被点击的button背景色又被改变。效果如下图&…

【JavaEE】多线程代码案例(2)

&#x1f38f;&#x1f38f;&#x1f38f;个人主页&#x1f38f;&#x1f38f;&#x1f38f; &#x1f38f;&#x1f38f;&#x1f38f;JavaEE专栏&#x1f38f;&#x1f38f;&#x1f38f; &#x1f38f;&#x1f38f;&#x1f38f;上一篇文章&#xff1a;多线程代码案例(1)&a…

女性经济崛起,天润融通用客户感知挖掘市场潜力

每逢一年一度的国际妇女节&#xff0c;“女性”话题都会被郑重地讨论。 从消费市场上来说&#xff0c;最近几年女性群体正在拥有越来越大的影响力&#xff0c;甚至出现了“她经济”这样的专属词汇在最近几年被市场反复讨论。 毫无疑问&#xff0c;女性消费群体的崛起已经成为…

监控平台—Zabbix对接grafana

目录 一、安装grafana并启动 二.浏览器访问 三、导入zabbix数据&#xff0c;对接grafana 四.如何导入模版 一、安装grafana并启动 添加一台服务器192.168.80.102 初始化操作 systemctl disable --now firewalld setenforce 0 vim /etc/selinux/config SELINUXdisabled cd /…

一文解开关于UWB定位技术的认识误区

作为一项新兴技术产业&#xff0c;UWB定位技术具有无限发展潜力。尤其是在TB行业应用中&#xff0c;UWB定位部分在项目的产值占比为10%-20%之间&#xff0c;这便意味着&#xff0c;UWB定位市场可以撬动其本身市场产值的5-10倍。 然而&#xff0c;伴随着UWB定位技术的迅速发展&a…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【通用密钥库基础概念】

通用密钥库基础概念 在使用通用密钥库完成应用开发前&#xff0c;开发者需要了解以下相关概念&#xff0c;以下概念将贯穿整个开发过程。 可信执行环境&#xff08;TEE&#xff09; 可信执行环境&#xff08;Trusted Execution Environment&#xff09;&#xff0c;简称TEE&…

论文解读StyleGAN系列——StyleGANv1

论文&#xff1a;A Style-Based Generator Architecture for Generative Adversarial Networks&#xff08;2018.12&#xff09; 作者&#xff1a;Tero Karras, Samuli Laine, Timo Aila 链接&#xff1a;https://arxiv.org/abs/1812.04948 代码&#xff1a;https://github.com…

Movable antenna 早期研究

原英文论文名字Historical Review of Fluid Antenna and Movable Antenna 最近&#xff0c;无线通信研究界对“流体天线”和“可移动天线”两种新兴天线技术的发展引起了极大的关注&#xff0c;这两种技术因其前所未有的灵活性和可重构性而极大地提高了无线应用中的系统性能。…

怎么把视频中走来走去的人去掉?

现在短视频火爆&#xff0c;很多朋友都会将生活中一些特定的场面拍摄记录下来。通过剪辑发布到一些短视频平台上&#xff0c;但是有时拍摄的视频不是那么完美&#xff0c;会拍到不相关的人或物&#xff0c;影响画面的主体&#xff0c;这种情况下我们可以去除视频中无关的走来走…

c++ primer plus 第15章友,异常和其他:友元类

c primer plus 第15章友&#xff0c;异常和其他&#xff1a;友元类 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;友元类 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的…

5个文章生成器免费版,自动写作文章更轻松

在这个信息如洪流般涌动的时代&#xff0c;写作所具有的重要性不言而喻。不管是学生需要完成的作业&#xff0c;还是职场人士得提交的报告&#xff0c;亦或是自媒体创作者必须输出的内容&#xff0c;都迫切要求我们具备一定的写作技能。然而&#xff0c;写作对很多人来说&#…

C++实现一个简单的Qt信号槽机制(1)

昨天写这个文章《深入探讨C的高级反射机制&#xff08;2&#xff09;&#xff1a;写个能用的反射库》的时候就在想&#xff0c;是不是也能在这套反射逻辑的基础上&#xff0c;实现一个类似Qt的信号槽机制&#xff1f; Qt信号槽机制简介 所谓的Qt的信号槽&#xff08;Signals …