DataWhale AI夏令营——机器学习

DataWhale AI夏令营——机器学习

  • 学习记录一
    • 1. 异常值分析
    • 2. 单变量箱线图可视化
    • 3. 特征重要性分析
  • 学习记录2 (2023.07.27更新)
    • 1. 数据层面
    • 2. 特征工程
    • 3. 数据划分方式
    • 4. 后处理

学习记录一

锂电池电池生产参数调控及生产温度预测挑战赛

已配置环境,跑通baseline,并在此基础上对数据进行了简单的分析。

1. 异常值分析

对训练集中的缺失值和异常值进行分析

train_data.info()  
train_data.describe()

观察到数据中不存在缺失值,存在异常值train_dataset['下部温度9'] == -32768.000000]。删除该缺失值。

train_dataset.drop(train_dataset[train_dataset['下部温度9'] == -32768.000000].index).reset_index(drop=True)

2. 单变量箱线图可视化

对训练集和测试集中的流量、上部设定温度和下部设定温度的数据分布进行了箱线图可视化
请添加图片描述
观察到上部和下部温度设定数据中存在一些异常值,对应数据中2023/1/7、2023/1/8,2023/1/9 三日的数据。
请添加图片描述


在Baseline(6.29551)基础上进行了两处改动:

  1. 删除了数据中存在的一处错误值(6.72811)
  2. 删除2023/1/7、2023/1/8,2023/1/9 三日的数据(6.73844)

在这里插入图片描述


3. 特征重要性分析

接着尝试了分析对于单个预测变量的有效特征分析

  1. 计算相关性矩阵
df = pd.concat([X, y.iloc[:,0]], axis = 1) # X是处理后的训练数据,y是标签
corr_matrix = df.corr()
corr_matrix['上部温度1'].sort_values(ascending=False)
  1. 对于lightgbm的特征重要性
feature_importance = model.feature_importance()
sorted_features = sorted(zip(X.columns, feature_importance), key=lambda x: x[1], reverse=True)

# 打印按照feature_importance值降序排列的特征列表
for feature, importance in sorted_features:
    print(f"{feature}: {importance}")

相关性矩阵计算的是线性相关性,所以结果观察到和lightgbm的特征重要性的结果是有些不同的。

下一步打算在针对每个预测输出的结果构建衍生不同的特征并进行特征筛选。

学习记录2 (2023.07.27更新)

这几天主要是和Baseline的斗争,然后全部失败。从数据层面,特征工程,数据划分方式,后处理都做了尝试。

1. 数据层面

之前上一次发现的数据中存在缺失值(为0)和异常值,采用了查找筛选出然后改动。而最近通过可视化发现,几乎每个特征都存在异常值。尤其体现在流量特征中。

请添加图片描述
上图是17个流量特征在训练数据中的折线图,可以看到还是有很大的波动。
请添加图片描述
通过利用中位数进行滑动窗口滤波后得到的结果,其中红色曲线是测试集滤波后的结果。
滤波采用的代码:

def smooth_t(df, cols):
    df = df.copy()

    window_size = 5
    for col in cols:
        df[f'smoothed_{col}'] = df[col].rolling(window=window_size, center=True).median()
        outlier_threshold = 5.0
        df['absolute_diff'] = abs(df[col] - df[f'smoothed_{col}'])
        outliers = df['absolute_diff'] > outlier_threshold
        df.loc[outliers, col] = df.loc[outliers, f'smoothed_{col}']
        df.drop(columns=[f'smoothed_{col}', 'absolute_diff'], inplace=True)
    return df

结果:滤波后的数据在测试集上MAE并没有减少。

2. 特征工程

主要从三个方面进行:

  1. 流量特征:构造了一定时间范围内(一天中)的方差、均值和变异系数。其中变异系数表现较好,在树模型的特征重要性中得分高于原始的流量特征,但用该特征训练后在测试集上的表现并没有更好,该怎样保留和删除特征仍有些疑惑。
  2. 温度设定特征:这些特征在corr相关性中和target的线性相关性较强,但在树模型的特征重要性评价中表现很差,而且值比较平稳,不容易构建衍生特征。我尝试了构建成离散特征,分别用最多的n 个值代替所有值,同时用1,0,-1构建其前后的变化。但这些特征表现都很差。
  3. 接着尝试了使用全自动特征生成器openFE。效果也一般。
from openfe import OpenFE, transform, tree_to_formula

ofe = OpenFE()
features = ofe.fit(data = train_x, label = train_y, n_jobs=12) # n_jobs:指定CPU内核数
train_x_feature, test_dataset_feture = transform(train_x, test_x, features[:20], n_jobs = 12)

# 查看前20个高分特征
for feature in ofe.new_features_list[:20]:
    print(tree_to_formula(feature))

3. 数据划分方式

因为是时间序列数据,直接使用train_test_split有穿越,所以使用了针对时序数据的TimeSeriesSplit,效果很差,使用了KFold表现也不如train_test_split

4. 后处理

  1. Hillclimbing库 —— 用于模型融合
    找到的一个用于模型融合的库,但因为目前只用了lightgbm,所以还未尝试。
!pip install hillclimbers

from hillclimbers import climb, partial

def climb_hill(
    train=None, 
    oof_pred_df=None, 
    test_pred_df=None, 
    target=None, 
    objective=None, 
    eval_metric=None,
    negative_weights=False, 
    precision=0.01, 
    plot_hill=True, 
    plot_hist=False
) -> np.ndarray: # Returns test predictions resulting from hill climbing
  1. 后处理技巧
    发现的一个有意思的处理技巧,但在这个数据集上不适用,但借鉴这个思路我用来构建了温度设定特征的离散编码,虽然效果也很差。
# 1. 存储target唯一值
unique_targets = np.unique(trian['yield'])
# 2. 完成对训练和测试数据的预测
off_preds = model.prdict(X_val[features])
test_preds += model.predict(test[features]) / n_splits
# 四舍五入到最接近的唯一目标值
off_preds = [min(unique_targets, key = lambda x: abs(x-pred)) for pred in oof_preds]
test_preds = [min(unique_targets, key = lambda x: abs(x-pred)) for pred in test_preds]

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud nacos 集成 gateway ,实现动态路由

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

数据库架构设计

数据库架构设计 数据库架构分类 介绍 介绍常见的 四种 数据库架构设计模型: 单库架构、分组架构、分片架构和分组分片架构 ,以及每种架构的 使用场景、存在的问题和对应的解决方案 。 一、数据模型 我们以 “ 用户中心 ” 数据库作为 数据模型 &…

python与深度学习(八):CNN和fashion_mnist二

目录 1. 说明2. fashion_mnist的CNN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测…

Spring(二):更简单的存储与读取 Bean

通过上一章的Spring,我们基本实现了Spring 的读取与存储,但是在操作过程中,读取与存储并没有那么得“简单” 一套流程还是很复杂,所以,本章来介绍更加简单得读取与存储。 在 Spring 中想要更简单的存储和读取对象的核…

Rust vs Go:常用语法对比(八)

题目来自 Golang vs. Rust: Which Programming Language To Choose in 2023?[1] 141. Iterate in sequence over two lists Iterate in sequence over the elements of the list items1 then items2. For each iteration print the element. 依次迭代两个列表 依次迭代列表项1…

【数据结构】实验四:循环链表

实验四 循环链表 一、实验目的与要求 1)熟悉循环链表的类型定义和基本操作; 2)灵活应用循环链表解决具体应用问题。 二、实验内容 题目一:有n个小孩围成一圈,给他们从1开始依次编号,从编号为1的小孩开…

【项目开发】商城 - 三级分类 - 简单笔记

目录标题 后端业务类实体类 前端最终实现效果排序变化批量删除 后端 业务类 // 省略其他简单的CRUDOverridepublic List<CategoryEntity> listWithTree() {// 1、查出所有分类List<CategoryEntity> list baseMapper.selectList(null);// 2. 找出所有的一级分类Li…

数据库监控工具-PIGOSS BSM

PIGOSS BSM 运维监控系统的重要功能之一是数据库监控&#xff0c;它能够帮助数据库管理员(DBA)和系统管理员监控包含Oracle、SQL Server、MySQL、DB2、PostgreSql、MongoDB、达梦、南大通用、人大金仓、神州通用等多种类异构型的数据库环境。PIGOSS BSM通过执行数据库查询来采集…

【Spring Cloud Alibaba】限流--Sentinel

文章目录 概述一、Sentinel 是啥&#xff1f;二、Sentinel 的生态环境三、Sentinel 核心概念3.1、资源3.2、规则 四、Sentinel 限流4.1、单机限流4.1.1、引入依赖4.1.2、定义限流规则4.1.3、定义限流资源4.1.4、运行结果 4.2、控制台限流4.2.1、客户端接入控制台4.2.2、引入依赖…

基于深度学习的CCPD车牌检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于CCPD数据集的高精度车牌检测系统可用于日常生活中检测与定位车牌目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的车牌目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练数据集…

【Spring篇】初识 Spring IoC 与 DI

目录 一. Spring 是什么 ? 二. 何为 IoC ? 三. 如何理解 Spring IoC ? 四. IoC 与 DI 五 . 总结 一. Spring 是什么 ? 我们通常所说的 Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个开源框架&#xff0c;有着活跃⽽ 庞⼤…

逻辑回归概述

逻辑回归介绍 1. 逻辑回归的应用场景 逻辑回归(Logistic Regression)是机器学习中的 一种分类模型 ,逻辑回归是一种分类算法,虽然名字中带有回归。由于算法的简单和高效,在实际中应用非常广泛 广告点击率是否为垃圾邮件是否患病信用卡账单是否会违约 逻辑回归就是解决二…

day14 | 100.二叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数

文章目录 一、二叉树的最大深度二、二叉树的最小深度三、完全二叉树的节点数 一、二叉树的最大深度 100.二叉树的最大深度 因为题给出的高度和深度是一样的&#xff0c;所以求得结果都能过。 class Solution { public:int getHeight(TreeNode *node){if (node nullptr)retu…

Pytest学习教程_基础知识(一)

前言 pytest是一个用于编写和执行Python单元测试的框架。它提供了丰富的功能和灵活性&#xff0c;使得编写和运行测试变得简单而高效。 pytest的一些主要特点和解释如下&#xff1a; 自动发现测试&#xff1a;pytest会自动查找以"test_"开头的文件、类和函数&#x…

腾讯 SpringBoot 高阶笔记,限时开源 48 小时,真香警告

众所周知&#xff0c;SpringBoot 最大的一个优势就是可以进行自动化配置&#xff0c;简化配置&#xff0c;不需要编写太多的 xml 配置文件&#xff1b;基于 Spring 构建&#xff0c;使开发者快速入门&#xff0c;门槛很低&#xff1b;SpringBoot 可以创建独立运行的应用而不需要…

【学习笔记】目标跟踪领域SOTA方法比较

目录 前言方法1 TraDeS:2 FairMOT:3 SMILEtrack:4 ByteTrack: 前言 常用于行人跟踪的多目标跟踪数据集包括&#xff1a;MOT 15/16/17/20、PersonPath22等… 为更好比较现有SOTA算法的检测性能&#xff0c;本博客将针对在各数据集上表现较优的算法模型进行介绍。&#xff08;表…

ip校园广播音柱特点

ip校园广播音柱特点IP校园广播音柱是一种基于IP网络技术的音频播放设备&#xff0c;广泛应用于校园、商业区、公共场所等地方。它可以通过网络将音频信号传输到不同的音柱设备&#xff0c;实现远程控制和集中管理。IP校园广播音柱具备以下特点和功能&#xff1a;1. 网络传输&am…

SSM框架 基础

1.数据库 2.工程 3.pom 4.web.xml 5.spring配置文件头部 6.实体类 7.StudentMapper接口 8. StudentMapper.xml 9.StudentService 10. StudentServiceImpl 11.StudentController 实战 查询所有 StudentMapper StudentService StudentServiceImpl StudentMapper.xml Stude…

效率与质量兼备的6个设计工具!

今天本文为大家推荐的这6个设计工具&#xff0c;将帮助设计师实现高效工作&#xff0c;同时也更好地展示自己的创作力&#xff0c;一起来看看吧&#xff01; 1、即时设计 即时设计是一款国内的设计工具&#xff0c;它为设计师提供了非常多实用的设计功能和精致的设计素材&…

TCP状态转换图

TCP状态转换图 了解TCP状态转换图可以帮助开发人员查找问题. 说明: 上图中粗线表示主动方, 虚线表示被动方, 细线部分表示一些特殊情况, 了解即可, 不必深入研究. 对于建立连接的过程客户端属于主动方, 服务端属于被动接受方(图的上半部分) 而对于关闭(图的下半部分), 服务端…