分子AI预测赛Task4笔记(结束)

话不多说,直接上官方链接:‌​​​‍​⁠​‌​‍​​​‌​⁠‬​‬​​‌​​​​‬‬​​​​‍⁠‍‌​⁠Task3:进阶baseline详解 - 飞书云文档 (feishu.cn)Task4:持续尝试,上分! - 飞书云文档 (feishu.cn)

 一、理解

  • 阅读了官方发布的Task4链接内容,主要是对“特征工程”、“模型训练”、"模型验证"三大模块进行优化
    • “特征工程”模块优化对InChI进行展开构建特征(即提取分子式、计算分子量、原子记数)
    • “模型训练”模块优化:
      • 方案一:使用lightgbm、xgboost和catboost模型依次跑完测试,取三个模型结果的平均值。
      • 方案二:使用stacking分层模型集成框架
    • "模型验证"模块优化,类比模型训练方案一和方案二,从而得出最终的优化后的结果

 二、此次分子AI赛个人最终代码

  • # 1. 导入需要用到的相关库
    import pandas as pd  # 导入Pandas库,用于数据处理
    import numpy as np  # 导入Numpy库,用于数值计算
    from xgboost import XGBClassifier  # 导入XGBoost分类器
    from sklearn.model_selection import train_test_split, GridSearchCV  # 导入训练测试集划分和网格搜索库
    from sklearn.preprocessing import LabelEncoder  # 导入标签编码器
    from sklearn.feature_selection import SelectFromModel  # 导入基于模型的特征选择库# 2. 读取训练集和测试集
    train = pd.read_excel('./data/data280993/traindata-new.xlsx')  # 读取训练集数据
    test = pd.read_excel('./data/data280993/testdata-new.xlsx')  # 读取测试集数据# 3. 特征工程
    # 3.1 删除train数据中的 'DC50 (nM)' 和 'Dmax (%)' 列
    train = train.drop(['DC50 (nM)', 'Dmax (%)'], axis=1)  # 删除不需要的列# 3.2 处理分类数据
    # 使用LabelEncoder对分类特征进行编码
    label_encoders = {}  # 创建一个空字典来存储编码器
    for col in train.columns[2:]:  # 遍历除了前两列之外的所有列if train[col].dtype == object:  # 检查列是否为对象类型(即字符串)# 合并训练集和测试集的类别combined_data = pd.concat([train[col], test[col]])  # 合并训练集和测试集的对应列le = LabelEncoder()  # 创建LabelEncoder实例combined_data = le.fit_transform(combined_data)  # 对合并后的数据编码train[col] = combined_data[:len(train)]  # 将编码后的数据放回训练集test[col] = combined_data[len(train):]  # 将编码后的数据放回测试集label_encoders[col] = le  # 保存编码器以备后用# 检查测试集中非数值类型的特征
    non_numeric_cols = test.select_dtypes(include=['object']).columns.tolist()  # 获取测试集中非数值类型的列名列表# 处理非数值类型的特征
    for col in non_numeric_cols:# 如果该特征应该在模型中,确保它是数值类型的if col in train.columns[2:]:# 尝试将字符串转换为数值类型test[col] = pd.to_numeric(test[col], errors='coerce')  # 转换为数值类型,无法转换的变为NaN# 确保测试集中没有缺失值
    test = test.fillna(0)  # 用0填充测试集中的缺失值# 分离特征和标签
    X_train = train.iloc[:, 2:].values  # 获取训练集的特征值
    y_train = train['Label'].values  # 获取训练集的标签值
    X_test = test.iloc[:, 1:].values  # 获取测试集的特征值# 4. 特征选择
    # 使用 XGBoost 模型进行特征选择
    selector = SelectFromModel(XGBClassifier(use_label_encoder=False, eval_metric='logloss'))  # 创建特征选择器
    selector.fit(X_train, y_train)  # 训练特征选择器
    X_train_selected = selector.transform(X_train)  # 应用特征选择器到训练集
    X_test_selected = selector.transform(X_test)  # 应用特征选择器到测试集# 5. 模型调优
    # 定义 XGBoost 模型的参数网格
    param_grid = {  # 定义参数网格'n_estimators': [100, 200, 300],  # 树的数量'max_depth': [5, 7, 9],  # 树的最大深度'learning_rate': [0.006, 0.04, 0.15],  # 学习率'subsample': [0.35, 0.55, 0.95],  # 子采样率'colsample_bytree': [0.55, 0.75, 0.95],  # 列采样率
    }# 使用网格搜索进行模型调优
    xgb_model = XGBClassifier(use_label_encoder=False, eval_metric='logloss')  # 创建XGBoost模型
    grid_search = GridSearchCV(estimator=xgb_model, param_grid=param_grid, cv=5)  # 创建网格搜索实例
    # 执行网格搜索以找到最佳参数组合
    grid_search.fit(X_train_selected, y_train)  # 执行网格搜索以找到最佳参数组合# 获取最佳参数模型
    best_xgb_model = grid_search.best_estimator_  # 获取最佳估计器(模型)# 6. 使用最佳模型进行预测
    pred = best_xgb_model.predict(X_test_selected)  # 使用最佳模型对测试集进行预测
    result = pd.DataFrame({'uuid': test['uuid'], 'Label': pred})  # 创建包含预测结果的DataFrame# 7. 保存结果文件到本地
    result.to_csv('submit_xgb2.csv', index=False)  # 将结果保存为CSV文件,不包含索引
    
  • 得分:0.76761

 三、结语

  • 还是学到了不少东西,虽然在机器学习这方面零基础但是通过官方4个Task的指引,从中学到了不少思路,尽管还是有很多东西看不懂,但是思维方式起码跟着Task有所提升
  • 工作之余学习一下,对我来说还是有提升的,非常新颖的学习方式,但是想要彻底去学习透彻还是得去学习原理,慢慢的从原理到实践,得脚踏实地才行,当一个思维方式的提升吧!

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

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

相关文章

C++左值右值

在C中,左值(lvalue)和右值(rvalue)是表达式分类的关键概念,它们主要影响表达式的赋值、函数调用以及操作符的使用方式。这些概念在C11及以后的版本中变得更加重要,因为引入了移动语义和右值引用…

妈妈带女儿美在心里

在这个充满温情与惊喜的午后,阳光温柔地洒落在每一个角落,仿佛连空气弥漫着幸福的味道。就在这样一个平凡的时刻,一段关于爱与成长的温馨画面,悄然在网络上绽放,引爆了无数人的心弦——#奚梦瑶2岁女儿身高#&#xff0c…

【Linux进程】命令行参数 环境变量(详解)

目录 前言 1. 命令行参数 什么是命令行参数? 2. 环境变量 常见的环境变量 如何修改环境变量? 获取环境变量 环境变量的组织方式 拓展问题 导入环境变量 3. 本地变量* 总结 前言 在使用Linux指令的时候, 都是指令后边根命令行参数, 每个指令本质都是一个一个的可执行程…

【UE5.1 角色练习】13-枪械射击——拿出与收起武器

目录 效果 步骤 一、安装射击武器 二、拿武器和收武器 效果 步骤 一、安装射击武器 1. 在虚幻商城中将“FPS Weapon Bundle”添加到工程中,由于我们使用的是5.1版本,我们可以先将该资产放入UE4工程中,然后迁移到5.1版本的工程 2. 打开角…

一.2.(4)放大电路静态工作点的稳定;(未完待续)

1.Rb对Q点及Au的影响 输入特性曲线:Rb减少,IBQ,UBEQ增大 输出特性曲线:ICQ增大,UCEQ减少 AUUO/Ui分子减少,分母增大,但由于分子带负号,所以|Au|减少 2.Rc对Q点及Au的影响 输入特性曲…

【JavaSE复习】数据结构、集合

JavaSE 复习 1.数据结构1.1 查找1.1.1 基本查找1.1.2 二分查找1.1.3 插值查找1.1.4 斐波那契查找1.1.5 分块查找1.1.6 分块查找的扩展(无规律数据) 1.2 排序1.2.1 冒泡排序1.2.2 选择排序1.2.3 插入排序1.2.4 快速排序 2. 集合2.1 基础集合2.1.1 集合和数…

爱了!8款超好用的PC端办公软件!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 你电脑中用的最久的软件是哪些?以下是否有你曾经使用过的软件呢?工欲善其事,必先利其器,今天继续…

无人机便携式侦测干扰设备(定全向)技术详解

无人机便携式侦测干扰设备(定全向)是一种专门针对无人机进行侦测和干扰的设备。它具备定向和全向两种工作模式,能够覆盖较宽的频率范围,有效侦测并干扰无人机与遥控器之间的通信信号,从而达到控制或驱离无人机的目的。…

验证回文串-string题目

用双指针&#xff0c;left right从两头往中间对比&#xff0c;不是字母的都略过&#xff0c;比的时候化成小写字母 125. 验证回文串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool isPalindrome(string s) {if(s.size() < 1)return true;int left …

论文复现-基于决策树算法构建银行贷款审批预测模型(金融风控场景)

作者Toby&#xff0c;来源公众号&#xff1a;Python风控模型&#xff0c;基于决策树算法构建银行贷款审批预测模型 目录 1.金融风控论文复现 2.项目背景介绍 3.决策树介绍 4.数据集介绍 5.合规风险提醒 6.技术工具 7.实验过程 7.1导入数据 7.2数据预处理 7.3数据可…

SpringBoot3+Vue3开发园区管理系统

介绍 在当今快速发展的城市化进程中&#xff0c;高效、智能的园区管理成为了提升居民生活品质、优化企业运营环境的关键。为此&#xff0c;我们精心打造了全方位、一体化的园区综合管理系统&#xff0c;该系统深度融合了园区管理、楼栋管理、楼层管理、房间管理以及车位管理等…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【明文导入密钥(ArkTS)】

明文导入密钥(ArkTS) 分别以导入AES256与RSA2048密钥为例&#xff0c;具体的场景介绍及支持的算法规格 开发步骤 指定密钥别名keyAlias。 密钥别名的最大长度为64字节。 封装密钥属性集和密钥材料。 密钥属性集同样与密钥生成中指定的密钥属性一致&#xff0c;须包含[HuksKe…

昇思MindSpore学习总结十——ResNet50迁移学习

1、迁移学习 &#xff08;抄自CS231n Convolutional Neural Networks for Visual Recognition&#xff09; 在实践中&#xff0c;很少有人从头开始训练整个卷积网络&#xff08;使用随机初始化&#xff09;&#xff0c;因为拥有足够大小的数据集相对罕见。相反&#xff0c;通常…

【机器学习】机器学习与时间序列分析的融合应用与性能优化新探索

文章目录 引言第一章&#xff1a;机器学习在时间序列分析中的应用1.1 数据预处理1.1.1 数据清洗1.1.2 数据归一化1.1.3 数据增强 1.2 模型选择1.2.1 自回归模型1.2.2 移动平均模型1.2.3 长短期记忆网络1.2.4 卷积神经网络 1.3 模型训练1.3.1 梯度下降1.3.2 随机梯度下降1.3.3 A…

SpringCloud学习Day7:Seata

概念 Seata是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务 工作流程 TC以Seata服务器形式独立部署&#xff0c;TM和RM则是以Seata Client的形式集成在微服务中运行

240707_昇思学习打卡-Day19-基于MindSpore通过GPT实现情感分类

240707_昇思学习打卡-Day19-基于MindSpore通过GPT实现情感分类 今天基于GPT实现一个情感分类的功能&#xff0c;假设已经安装好了MindSpore环境。 # 该案例在 mindnlp 0.3.1 版本完成适配&#xff0c;如果发现案例跑不通&#xff0c;可以指定mindnlp版本&#xff0c;执行!pip…

Mysql数据库索引、事务相关知识

索引 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c; 并指定索引的类型&#xff0c;各类索引有各自的数据结构实现 查看索引 show index from 表名;创建索引对于非主键、非唯一约束、非外键的字段&#…

基于贝叶斯优化的卷积神经网络-循环神经网络混合模型的的模拟股票时间序列预测(MATLAB R2021B)

将机器学习和深度学习方法运用到股市分析中, 不仅具有一定的理论价值, 也具有一定的实践价值。从理论价值上讲, 中国的量化投资技术&#xff08;投资观念、方法与决策等&#xff09;还不够成熟, 尚处在起步阶段, 能够将量化投资技术运用到投资决策中的公司寥寥无几。目前, 国内…

端口被占用,使用小黑框查杀

netstat -ano &#xff08;查看目前所有被占的端口&#xff09; netstat -ano|findstr " 8080" 查一下目前被占用的端口号 &#xff0c;目前我要查的端口号是&#xff1a;8080&#xff0c;注意 后面打8080的时候&#xff0c;要有空格&#xff0c;要不然报错 **task…

Zabbix 的部署和自定义监控内容

前言 一个完整的项目的业务架构包括 客户端 -> 防火墙 -> 负载均衡层&#xff08;四层、七层 LVS/HAProxy/nginx&#xff09; -> Web缓存/应用层&#xff08;nginx、tomcat&#xff09; -> 业务逻辑层(php/java动态应用服务) -> 数据缓存/持久层&#xff08;r…