当前位置: 首页 > news >正文

Kaggler日志--Day9

进度24/12/18

昨日复盘:
补充并解决Day7Kaggler日志–Day7统计的部分问题

今日进度:
继续完成Day8Kaggler日志–Day8统计问题的解答

明日规划:
今天报名了Regression with an Insurance Dataset算是新手村练习比赛,截止时间是25年1月1日,还有13天。

问题解决

整体流程

四个部分

  • EDA(探索性数据分析)
  • 预处理(移除行、列,填补空缺值)
  • 特征工程(新增特征,特征放缩变换)(类似更高级的预处理)
  • 建模(模型选择,集成,训练与评估)
昨天的问题:
  • EDA部分
    • 对不同变量类型判别的举例说明:
      • 分类可视化时:离散型数值类型、连续型数值类型、类别类型
      • 填补空缺时:填补NA的,填补众数的类别型,填补平均数的数值型,分组填补的。
    • 对于不同类型变量使用的可视化图表的理解
      • 连续分布:kde核密度估计画柱状图、箱线图
      • 离散分布:柱状图
    • 多变量分析可视化
      • 两两相关性分析:相关性热力图–找多重共线性变量
      • 单变量与目标值的相关性:相关性指标、散点图
    • 箱线图与离群点、skewed:箱线图要素以及偏态的判断
待解决问题
  • EDA部分
    • 空缺值填补策略
  • 特征工程
  • CV验证的应用
  • 集成模型
  • 模型融合

空缺值填补

Pandas中使用NaN表示空缺值。
空缺值的产生可能是由于维护不当,或用户没有响应造成的。

缺失值类型

  • 完全随机缺失(MCAR):当数据缺失的概率在所有观测值中均匀分布时为这种缺失。该数据的缺失与数据集中任何其它观察到的或者未观察到的数据之间没有关系。这种缺失是纯随机的,没有任何可辨别的模式。
  • 随机缺失(MAR):数据缺失取决于观测到的数据而不是缺失的数据本身。该缺失值可以通过已拥有的信息变量来解释。缺失值中存在某种模式。(eg.一份数据中,性别为空的记录中才可能缺少年龄项,年龄的缺失取决于性别,但缺少性别的记录中年龄的缺失仍是随机的)
  • 非随机缺失(MNAR):数据的缺失与未观测数据本身有关,此类缺失有固定的模式,但是通过观测变量来解释。(在有关图书馆的调查中,逾期图书较多的人不太可能回应调查,因此逾期图书数量缺失,取决于逾期图书的数量)

了解缺失数据类型至关重要,因为它决定了处理缺失值的适当策略并确保统计分析的完整性

处理类型

  • 删除:丢弃太多数据会影响结论的可靠性
  • 归纳法:
    • 均值/中位数/众数插补:如果数据缺失不是随机分布的,可能会引入偏差。
    • K近邻(KNN插补):根据可用特征找到最近的数据点(邻居),并使用它们的值来估计缺失值。当拥有大量数据且缺失分散时,KNN很有用
    • 基于模型的插补:根据数据中的其它特征来预测缺失值,这可能是一种强大的技术,但是需要更多的专业知识,并且计算成本可能很高。

为什么要处理缺失值

  • 如果数据包含缺失值,许多机器学习算法都会失败
  • 最终可能构建一个有偏见的模型,如果缺失值处理不当会导致不正确的结果
  • 缺失数据可能导致系统缺乏精度

处理方法

  • 删除缺失值
  • 填补缺失值
  • 填补分类特征的缺失值
  • 使用Sci-kit学习库填补缺失值
  • 使用缺失值作为特征
删除缺失值

一般来说不推荐,如果缺失值属于非随机确实类型(MNAR),则更不应删除。
如果为随机缺失或者完全随机缺失,则可以考虑删除,当然删除就可能丢失有用数据

删除也有两种方法:

  • 整行删除df.dropna(axis=0)
  • 整列删除``df.drop([‘col_name’], axis=1)
估算缺失值
  • 用任意值替换df["col_name"].fillna(0)
  • 用平均值(适用数值)/众数(适用类别)/中位数(适用出现异常的数值)替换df["col_name"] = df["col_name"].fillna(df["col_name"].mean())
  • 用前一个值向前填充(适用于时间序列数据)Series.fillna(methods='ffill')。用下一个值是bfill
  • 插值:有多种不同的插值方法–多项式、线性、二次。默认是线性Series.interpolate()
    (插值是利用周围的数值来估计中间的空缺值,一般用在序列数据或图像数据上)
分类特征缺失值
  • 估算最常见的值
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy="most_frequent")
imputer.fit_transformer(X)
  • 估算缺失值:SimpleImputer(strategy="constant", fill_value="missing")
使用Sci-kit学习库填补缺失值

通过创建另一个模型来根据另一个变量预测一个变量的观测值,称为回归填补

  • 单变量方法imp = SimpleImputer(missing_values=np.nan, strategy='mean')
  • 多变量方法
    • KNNImputer:找到已有观测值最相似的行,利用这些行估计缺失值
    • IterativeImputer:构建从已有观测值计算缺失观测值的模型来估计缺失值
使用“缺失值”作为特征

某些情况下,可以保留缺失值的缺失情况作为特征。因为有时,缺失值缺失的原因与尝试预测的目标变量之间可能存在关系。
(eg. 假设正在预测疾病,由于没有贫困人口记录,年龄缺失很可能可是一个很好的指标,因为年龄缺失不是随机的,贫困人口很可能缺失年龄,并且贫困核疾病相关)

imputer = SimpleImputer(add_indicator=True)
imputer.fit_transform(X)

特征工程

特征工程是指从原始数据转化为特征向量的过程,特征工程是机器学习中最重要的起始步骤,会直接影响机器学习的效果,并通常需要大量的时间。典型的特征工程包括数据清理、特征提取、特征选择等过程。

数据清理

  • 缩放特征值
  • 处理极端离群值
  • 分箱(离散化)
  • 填补遗漏值
  • 移除重复样本、不良标签、不良特征值等
  • 平滑
  • 正则化

降维

高维情形下经常会碰到样本系数、距离计算困难的问题,解决方法就是降维

  • 主成分分析法(PCA)
  • 核化线性降维(KPCA)
  • 等…

特征选择

特征选择是一个从给定的特征集合种选择与当前学习任务相关的特征的过程。一些“冗余特征”需要剔除。
常见的特征选择方法有三类:

  • 过滤式选择:先对数据集进行特征选择,再训练学习器,特征选择与后续机器学习无关。典型算法为Relief算法
    • 方差选择法
    • 相关系数法
    • 卡方检验
    • 互信息法
  • 包裹是选择:选择直接把最终要使用的学习器的性能作为特征子集的评价标准。典型算法为LVM
    • 递归特征消除法
  • 嵌入式选择:将特征选择过程与学习器训练过程融为一体,两者再同一个优化过程中文昌,即再学习器训练过程中自动地进行了特征选择。典型算法为岭回归、LASSO回归等
    • 基于惩罚项地特征选择法
    • 基于树模型的特征选择法

良好特征的特点包括:

  • 避免很少使用的离散特征值:良好的特征值应该再数据集中出现大约5次以上
  • 最好具有清晰的定义
  • 良好的浮点特征不包含超出范围的异常断点或“神奇”的值
  • 特征的定义不应随时间变化

特征组合

特征组合称为特征交叉,通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。

常见的特征组合方程:

  • A X B
  • A X B X C X D X E
  • A X A

CV的深入理解

有一个问题:CV可以用在最终评估和超参数调优的网格化搜索过程中,但是如果这两个过程都使用同一个数据集进行CV。就是最终验证要用到的数据参与到了模型的建模(调优)过程中,这样是可以的吗?

集成建模

模型集成是一种通过结合多个独立训练的机器学习模型来提高整体性能的技术。这种方法通过利用多个模型的额不同优势和学习特征,以期望在继承后获得更好的泛化能力、稳健性和性能表现。

常见类型:

  • 投票集成:多个模型独立训练,预测时每个模型投票,最终的预测结果有多数投票决定
  • 平均集成,多个模型的预测结果取平均值,分类问题可以使用概率的平均值
  • 自适应集成:这种方法动态地选择哪个模型对于给定输入更合适。这可以基于输入数据的特性,例如使用某个模型在某些特定子集上表现更好
  • Stacking :更复杂的集成方法,在一个一元模型的框架下结合多个基本模型。基本模型的预测结果成为元模型的输入。元模型通过学习如何结合基本模型的输出来产生最终预测结果
  • Boosting,其中弱分类器按顺序进行训练,每个新模型都试图纠正前一个模型的错误,最终的预测结果时所有模型的加权组合。
  • Bagging,通过在训练集上进行重采样,训练多个模型,然后将它们的预测结果平均或投票

优势如下:

  1. 提高泛化能力
  2. 降低过拟合风险
  3. 提高鲁棒性
  4. 性能提升

模型融合

模型融合是指将多个模型的输出结果结合起来,以产生最终的预测结果。模型融合通常是集成建模的一个具体实现,强调如何将不同模型的结果进行合并。

集成建模更强调模型的组合策略和训练过程,通常涉及多种模型和集成方法。
模型融合侧重于如何将多个模型的输出结果结合在一起,强调的是结果的整合。

附录

有关EDA和特征工程的思考

EDA更多的是查询数据,发现数据模式和异常,而实际的对数据的各种修改操作都算是特征工程的范畴。

二者相互促进:
EDA为特征工程和模型选择提供直到,特征工程构建新的特征后可以再次EDA,以验证新特征对模型性能的影响。

相关文章:

Kaggler日志--Day9

进度24/12/18 昨日复盘: 补充并解决Day7Kaggler日志–Day7统计的部分问题 今日进度: 继续完成Day8Kaggler日志–Day8统计问题的解答 明日规划: 今天报名了Regression with an Insurance Dataset算是新手村练习比赛,截止时间是2…...

OpenCVE:一款自动收集NVD、MITRE等多源知名漏洞库的开源工具,累计收录CVE 27万+

漏洞库在企业中扮演着至关重要的角色,不仅提升了企业的安全防护能力,还支持了安全决策、合规性要求的满足以及智能化管理的发展。前期博文《业界十大知名权威安全漏洞库介绍》介绍了主流漏洞库,今天给大家介绍一款集成了多款漏洞库的开源漏洞…...

麒麟信安参编的《能源企业数字化转型能力评价 技术可控》团体标准发布

近日,中国能源研究会发布公告,《能源企业数字化转型能力评价 技术可控》团体标准发布。该标准由麒麟信安与国网湖北省电力有限公司武汉供电公司、国网智能电网研究院有限公司、中能国研(北京)电力科学研究院等单位联合编制。 《能…...

戴尔物理机更换完Raid控制器(阵列卡),启动服务器失败

背景 我们使用的物理机是戴尔的POWEREDGE R730机器,由于硬件损坏导致该问题的延申,再更换完Raid的控制器(阵列卡)之后导致启动服务器报错。 报错: There are offline or missing virtual drives with preserved cac…...

计算机基础知识——数据结构与算法(二)(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 大数据相关标准…...

docsify

macos ➜ ~ node -v v16.20.2➜ ~ npm --version 8.19.4全局安装 docsify-cli 工具 npm i docsify-cli -g➜ ~ docsify -vdocsify-cli version:4.4.4初始化项目 docsify init ./docsls -ah docs . .. .nojekyll README.md index.htmlindex.html 入口文件README.md 会…...

GEE教程——使用 CHIRPS 和 GSMaP 数据集计算并可视化了特定区域的降水量

目录 简介 函数 ee.Image.pixelLonLat() No arguments. Returns: Image visualize(bands, gain, bias, min, max, gamma, opacity, palette, forceRgbOutput) Arguments: Returns: Image 代码解释 代码 结果 简介 GEE教程——使用 CHIRPS 和 GSMaP 数据集计算并可视…...

前端实现页面自动播放音频方法

前端实现页面视频在谷歌浏览器中自动播放音频方法 了解Chrome自动播放策略 在Chrome和其他现代浏览器中,为了改善用户体验,自动播放功能受到了限制。Chrome的自动播放策略主要针对有声音的视频,目的是防止页面在用户不知情的情况下自动播放声…...

【Nginx-5】Nginx 限流配置指南:保护你的服务器免受流量洪峰冲击

在现代互联网应用中,流量波动是常态。无论是突发的用户访问高峰,还是恶意攻击,都可能导致服务器资源耗尽,进而影响服务的可用性。为了应对这种情况,限流(Rate Limiting)成为了一种常见的保护措施…...

【芯片设计- RTL 数字逻辑设计入门 番外篇 7.1 -- 基于ATE的IC测试原理】

文章目录 ATE 测试概述Opens/Shorts测试Leakage测试AC测试转自:漫谈大千世界 漫谈大千世界 2024年10月23日 23:17 湖北 ATE 测试概述 ATE(Automatic Test Equipment)是用于检测集成电路(IC)功能完整性的自动测试设备。它在半导体产业中扮演着至关重要的角色,主要用于检…...

SurfaceFlinger 学习

Android 图形系统之七:SurfaceFlinger-CSDN博客 CSDN...

Flink SQL 从一个SOURCE 写入多个Sink端实例

一. 背景 FLINK 任务从一个数据源读取数据, 写入多个sink端. 二. 官方实例 写入多个Sink语句时,需要以BEGIN STATEMENT SET;开头,以END;结尾。--源表 CREATE TEMPORARY TABLE datagen_source (name VARCHAR,score BIGINT ) WITH (connector datagen …...

python飞机大战游戏.py

python飞机大战游戏.py import pygame import random# 游戏窗口大小 WINDOW_WIDTH 600 WINDOW_HEIGHT 800# 颜色定义 BLACK (0, 0, 0) WHITE (255, 255, 255)# 初始化Pygame pygame.init()# 创建游戏窗口 window pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))…...

【C++】14___String容器

目录 一、string基本概念 二、string赋值操作 三、字符串拼接 四、 string查找和替换 五、 string字符串比较 六、string插入和删除 七、string子串 一、string基本概念 本质:string是C风格的字符串,而string本质上是一个类 string和char*区别&am…...

数据特性库 前言

文章目录 一、num-traits库简介二、核心功能三、更新功能四、使用方式五、应用示例六、结论 一、num-traits库简介 num-traits是Rust编程语言中的一个开源库,专注于为数值类型提供一系列的数学运算特性和接口。它支持泛型数学计算,允许开发者在不指定具…...

jdk和cglib动态代理区别

目标类不同 jdk目标类需要实现接口。 cglib不需要。 代理类生成方式不同 jdk内部字节码生成代理类。 cglib使用ASM字节码生成库生成代理类。 代理类和目标类关系不同 jdk代理类实现目标类接口,jdk无法代理目标类中static或private的方法。 cglib 代理类继承目标类…...

部署Mysql、镜像和容器、常见命令

目录 部署Mysql 镜像和容器 常见命令 部署Mysql 可以有多个容器 docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123 \mysql docker run -d \--name mysql2 \-p 3307:3307 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123 \mys…...

【数学】P2671 [NOIP2015 普及组] 求和

题目背景 NOIP2015 普及组 T3、深入浅出进阶1-5 题目描述 一条狭长的纸带被均匀划分出了 n n n 个格子,格子编号从 1 1 1 到 n n n。每个格子上都染了一种颜色 c o l o r i color_i colori​ 用 [ 1 , m ] [1,m] [1,m] 当中的一个整数表示)&…...

【AI图像生成网站Golang】项目测试与优化

AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构 五、图床上传与图像生成API搭建 六、项目测试与优化 六、项目测试与优化 在开发过程中,性能优化是保证项目可扩展性和用户体验的关键步骤。本文将详细介绍我如何使用一…...

vue常用自定义指令

参考链接1https://blog.csdn.net/m0_67584973/article/details/139300966?spm1001.2014.3001.5501 参考链接2https://juejin.cn/post/7067051410671534116...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

pam_env.so模块配置解析

在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...