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,以验证新特征对模型性能的影响。

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

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

相关文章

网络安全(3)_安全套接字层SSL

4. 安全套接字层 4.1 安全套接字层(SSL)和传输层安全(TLS) (1)SSL/TLS提供的安全服务 ①SSL服务器鉴别,允许用户证实服务器的身份。支持SSL的客户端通过验证来自服务器的证书,来鉴别…

Starfish 因子开发管理平台快速上手:如何完成策略编写与回测

DolphinDB 开发的因子开发管理平台 Starfish 围绕量化投研的因子、策略开发阶段设计,为用户提供了一个从数据管理、因子研究到策略回测的完整解决方案。 因子平台的回测引擎提供了多个关键的事件函数,涵盖策略初始化、每日盘前和盘后回调、逐笔、快照和…

排序算法(3)——归并排序、计数排序

目录 1. 归并排序 1.1 递归实现 1.2 非递归实现 1.3 归并排序特性总结 2. 计数排序 代码实现 3. 总结 1. 归并排序 基本思想: 归并排序(merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff0…

GIN

gin是什么 Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。如果你需要极好的性能,使用 Gin 吧。 特点:gin是golang的net/http库封装的web框架,api友好,注…

基于asp.net游乐园管理系统设计与实现

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…

PH热榜 | 2024-12-16

1. Animate AI 标语:动画系列剧集AI视频生成器 介绍:Animate AI 是一体化AI动画视频生成器,可以快速、轻松制作出动画系列视频。今天就免费开启你的创意之旅吧!轻松搞定! 产品网站: 立即访问 Product H…

VScode使用教程(菜鸟版)

目录 1.VScode是什么? 2.VScode的下载和安装? 2.1下载和安装 下载路径: 安装流程: 一、点击【Download for Windows】 二、等一小会儿的下载,找到并双击你下载好的.exe文件,开始进入安装进程 三、点…

【前端基础篇】JavaScript之DOM介绍

文章目录 前言WebAPI背景知识什么是WebAPI什么是APIAPI参考文档 DOM基本概念什么是DOMDOM树查找HTML元素方法概览1. document.getElementById(id)2.document.getElementsByTagName(name)3. document.getElementsByClassName(name)4. document.querySelector(CSS选择器)5. docum…

LabVIEW起落架震台检测

在现代飞机制造与维护过程中,起落架的性能测试是保障飞机安全的重要环节。通过LabVIEW开发的起落架小落震台检测系统,通过模拟飞机着陆过程,准确捕捉起落架在着陆时承受的各种动力学特性和应力响应,有效提升起落架设计的精度与可靠…

(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细!!!)

续上篇博客(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(上)----空间数据的编辑与处理(超超超详细!!!)-CSDN博客 继续更新 目录 什么是拓扑? 1.3.5道路拓…

libaom 源码分析:熵编码模块介绍

AV1 熵编码原理介绍 关于AV1 熵编码原理介绍可以参考:AV1 编码标准熵编码技术概述libaom 熵编码相关源码介绍 函数流程图 核心函数介绍 av1_pack_bitstream 函数:该函数负责将编码后的数据打包成符合 AV1 标准的比特流格式;包括写入序列头 OBU 的函数 av1_write_obu_header…

pset4filter less: helpers.c

(4)blur function 简单画图熟悉一下要做什么 可以看到3种情况,顶格,边界,里面如果分开算的话,是真的麻烦;但是当时还真的没有想到更好的,就先写一写(此处摘取…

【java】规则引擎

Java 规则引擎:Easy Rules 简介 优点 通过 Easy Rules 引入规则引擎的主要优点是解耦业务规则和代码逻辑: 无需修改代码,只需更新数据库中的规则即可。提供灵活、可扩展和可维护的方式处理复杂业务逻辑。 规则定义 Easy Rules 支持多种形…

满足你的个性化需求!ChatGLM4 模型微调教程

一、 大模型 ChatGLM4 简介 GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本。 在语义、数学、推理、代码和知识等多方面的数据集测评中, GLM-4-9B 及其人类偏好对齐的版本 GLM-4-9B-Chat 均表现出超越 Llama-3-8B 的卓越性能。 除了能进行多…

TCP基础了解

什么是 TCP ? TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。 面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的; 可靠的:无论…

如何测量分辨率

一、什么是分辨率? 分辨率指的是分清物体细节的能力。分辨率是一个成像系统还原空间频率的能力。一些人只是简单的用分辨率去描述极限分辨率,但是相机在在不同的对比度的情况下还原低,中和高频率的能力,也可以显示全面综合的信息。…

HCIA-Access V2.5_4_1_1路由协议基础_IP路由表

大型网络的拓扑结构一般会比较复杂,不同的部门,或者总部和分支可能处在不同的网络中,此时就需要使用路由器来连接不同的网络,实现网络之间的数据转发。 本章将介绍路由协议的基础知识、路由表的分类、静态路由基础与配置、VLAN间…

气象与旅游之间的关系,如果借助高精度预测提高旅游的质量

气象与旅游之间存在密切的关系,天气条件直接影响旅游者的出行决策、旅游体验和安全保障。通过高精度气象预测技术,可以有效提升旅游质量,为游客和旅游行业带来显著的优势。 1. 提高游客出行决策效率 个性化天气服务:基于高精度气象预测,旅游平台可以提供个性化的天气预报服…

【计算机视觉基础CV】03-深度学习图像分类实战:鲜花数据集加载与预处理详解

本文将深入介绍鲜花分类数据集的加载与处理方式,同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向,为读者提供从数据组织、预处理、加载到可视化展示的完整过程,并为后续模型训练打下基础。 前言 在计算机视觉的深…

数据结构之线性表1

2.1 线性表的定义和基本操作 1.线性结构的特点是:在数据元素的非空有限集中, (1)存在惟一的一个被称做“第一个”的数据元素; (2) 存在惟一的一个被称做“最后一个”的数据元素; &a…