使用MICE进行缺失值的填充处理

在我们进行机器学习时,处理缺失数据是非常重要的,因为缺失数据可能会导致分析结果不准确,严重时甚至可能产生偏差。处理缺失数据是保证数据分析准确性和可靠性的重要步骤,有助于确保分析结果的可信度和可解释性。

在本文中,我们讲重点介绍MICE。

MICE(Multiple Imputation by Chained Equations)是一种常用的填充缺失数据的技术。它通过将待填充的数据集中的每个缺失值视为一个待估计的参数,然后使用其他观察到的变量进行预测。对于每个缺失值,通过从生成的多个填充数据集中随机选择一个值来进行填充。通常会重复这个过程多次以增加填充的稳定性。

首先我们先介绍一些常用的缺失数据处理技术:

删除

处理数据是困难的,所以将缺失的数据删除是最简单的方法。

对于小数据集

如果某列缺失值< 3%,则可以将缺失的样本删除,如果某列缺失值>40%,则可以将该列直接删除。

而对于缺失值在>3%和<40%的数据,则需要进行填充处理。

对于大数据集:

缺失值< 10%可以使用填充技术

缺失值> 10%则需要测试相关性并决定该特征是否值得用于建模后逐行删除缺失记录

删除是处理缺失数据的主要方法,但是这种方法有很大的弊端,会导致信息丢失。

填充

填充是一种简单且可能是最方便的方法。我们可以使用Scikit-learn库中的SimpleImputer进行简单的填充。

 from sklearn.impute import SimpleImputer

SimpleImputer有“strategy”参数,它可以让我们选择填充的策略

比如特征是数值可以使用均值或中位数作为策略来估算值,特征是分类的可以使用众数作为策略来估算值

K-最近邻插值算法

KNN算法是一种监督技术,它简单地找到“特定数据记录中最近的k个数数据点”,并对原始列中最近的k个数数据点的值取简单的平均值,并将输出作为填充值分配给缺失的记录。

我们可以根据现有数据的特点选择不同的距离度量——“欧几里得距离”、“曼哈顿距离”、“闵可夫斯基距离”等。对于数值特征,KNN插值对相邻值进行加权平均。对于分类特征,KNN取最近邻值的众数。

这里的“K”是一个超参数。

MICE

Multiple Imputation by Chained Equations的基本假设是

“数据是随机丢失的,通过查看其他数据样本/记录,可以对数据的真实价值做出有根据的猜测。”

看到他的英文我们就知道,他又2个主要的工作步骤:

  1. 多重插补(Multiple Imputation):MICE通过多次生成填充数据集来处理缺失数据。在每次迭代中,它将缺失值填充为估计的值,然后将完整的数据集用于下一次迭代,从而产生多个填充的数据集。
  2. 链式方程(Chained Equations):MICE使用链式方程的方法进行填充。它将待填充的缺失值视为需要估计的参数,然后使用其他已知的变量作为预测变量,通过建立一系列的预测方程来进行填充。每个变量的填充都依赖于其他变量的估计值,形成一个链式的填充过程。

步骤:

  1. 初始化:首先,确定要使用的填充方法和参数,并对数据集进行初始化。
  2. 循环迭代:接下来,进行多次迭代。在每次迭代中,对每个缺失值进行填充,使用其他已知的变量来预测缺失值。
  3. 生成多个填充数据集:每次迭代生成一个填充的数据集,直到达到设定的迭代次数或者满足收敛条件。
  4. 合并结果:最后,将生成的多个填充数据集进行合并,通常采用简单的方法(如取均值)来汇总结果,得到一个最终的填充数据集。

优点:

  • 考虑了变量之间的相关性,能够更准确地估计缺失值。
  • 生成了多个填充数据集,能够反映不确定性。
  • 能够灵活地处理不同类型的变量和不同分布的数据。

注意事项:

  • 对于不适用于预测的变量,需要进行预处理或者使用专门的方法进行填充。
  • 需要根据实际情况选择合适的迭代次数和收敛条件,以确保填充结果的稳定性和准确性。
  • 填充后的数据集可能会影响后续分析的结果,因此需要进行适当的验证和比较。

下面我们来使用

fancyimpute

库来进行代码显示。

fancyimpute

提供了多种高级的缺失数据填充技术,包括矩阵分解、K-最近邻、插值和矩阵完成等。它的设计目标是提供一种方便、灵活且高效的方式来处理缺失数据,以便于后续的数据分析和建模。

 import pandas as pdfrom sklearn.model_selection import train_test_splitfrom fancyimpute import IterativeImputer.#In these steps we undertake data exploration and pre-processing.#I intend to skip till the completion of train-test split of data...xtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.25, random_state=101)# Initialize MICE imputerimputer = IterativeImputer()# Fit and transform MICE imputer on training dataxtrain_imputed = imputer.fit_transform(xtrain)# Transform test data using the trained MICE imputerxtest_imputed = imputer.transform(xtest)

这里需要注意的是,我们需要在训练集上进行拟合,然后在测试集上进行转换,这样可以保证不会有数据泄露的问题。

总结

虽然MICE带来了计算成本,需要考虑以非常接近真实的标签估算为代价,但是它可以有效地处理各种类型和分布的缺失数据,是处理缺失数据的重要工具之一。其他技术相对非常简单,但是结果的质量没有MICE那么好。

https://avoid.overfit.cn/post/912ca36b9d44439c801243267178c02a

作者:Rahul Kotecha

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

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

相关文章

家政小程序系统源码开发:引领智能生活新篇章

随着科技的飞速发展&#xff0c;小程序作为一种便捷的应用形态&#xff0c;已经深入到我们生活的方方面面。尤其在家庭服务领域&#xff0c;家政小程序的出现为人们带来了前所未有的便利。它不仅简化了家政服务的流程&#xff0c;提升了服务质量&#xff0c;还为家政服务行业注…

工程问题与学术研究的融合 —— 校企合作

一、工程问题与学术研究的常规融合方法 工程问题与学术研究的融合通常体现在“产学研结合”的模式中&#xff0c;具体策略如下&#xff1a; 1. 需求导向&#xff1a;从实际工程问题出发&#xff0c;明确科研目标。在解决工程问题的过程中&#xff0c;识别出需要进一步研究的基…

Vue.js2+Cesium1.103.0 十五、计算方位角

Vue.js2Cesium1.103.0 十五、计算方位角 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"/> </template><script> /* eslint-disable no-undef */ /* eslint-disable new-cap */ /* eslint-disable n…

代码随想录算法训练营第三十天 | 重新安排行程、N皇后、解数独

目录 重新安排行程N皇后解数独总结 LeetCode 332.重新安排行程 LeetCode 51. N皇后 LeetCode 37. 解数独 重新安排行程 给定一个机票的字符串二维数组 [from, to]&#xff0c;子数组中的两个成员分别表示飞机出发和降落的机场地点&#xff0c;对该行程进行重新规划排序。所有…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 2月14日,星期三

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年2月14日 星期三 农历正月初五 1、 第十四届全国冬季运动会将于17日开幕&#xff0c;部分赛事今天起陆续开赛。 2、 2024年购房政策将进一步宽松&#xff0c;专家称今年买房性价比更高。 3、 春节档票房突破45亿元&#…

docker 3.1 镜像

docker 3.1 镜像命令 拉取镜像 docker pull debian #从 Docker Hub 拉取名为 debian 的镜像docker pull hello-world #从 Docker Hub 拉入名为 hello-world 的镜像‍ 运行镜像/容器 docker run hello-world ‍ 查看本地所有的镜像 docker images​​ 容器生成镜像…

【数据结构】链表OJ面试题3《判断是否有环》(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 后三题在这http://t.csdnimg.cn/gbohQ 记录每天的刷题&#xff0c;继续坚持&#xff01; 2.OJ题目训练 9. 给定一个链表&#xff0c;判断链表中是否有环。 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成…

如何使用六图一表七种武器

六图一表七种武器用于质量管理&#xff1a; 描述当遇到问题时应该用那张图来解决&#xff1a; 一、如果题目说出了质量问题需要找原因&#xff1f; 解&#xff1a;用因果图&#xff0c;因果图也称石川图或鱼骨图 二、如果要判断过程是否稳定受控&#xff1f; 解&#xff1a…

4核8G服务器支持多少人同时在线访问?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

【51单片机】LCD1602(江科大)

1.LCD1602介绍 LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符 显示容量:162个字符,每个字符为5*7点阵 2.引脚及应用电路 3.内部结构框图 屏幕: 字模库:类似于数码管的数…

一起玩儿Proteus仿真(C51)——05. 红绿灯仿真(一)

摘要&#xff1a;本文介绍如何仿真红绿灯 今天来做一个红绿灯仿真的程序&#xff0c;这个程序主要包括一下这些功能&#xff1a; 模拟的路口为十字交叉路口&#xff0c;假设东西和南北方向都是双向行驶&#xff0c;因此需要设置4组红绿灯和4个倒计时显示屏。倒计时时间最长为9…

【教程】C++语言基础学习笔记(七)——Array数组

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【C语言基础学习】系列文章 第一章 《项目与程序结构》 第二章 《数据类型》 第三章 《运算符》 第四章 《流程控制》 第五章…

Linux_进程概念

硬件系统 软件系统 进程概念 进程状态 孤儿进程 进程优先级 一.硬件系统 1.1 冯诺依曼体系结构 数学家冯诺依曼提出了计算机制造的三个基本原则&#xff0c;即采用二进制逻辑、程序存储执行以及计算机由五个部分组成&#xff08;运算器、控制器、存储器、输入设备、输出设备&a…

Python学习之路-爬虫提高:scrapy基础

Python学习之路-爬虫提高:scrapy基础 为什么要学习scrapy 通过前面的学习&#xff0c;我们已经能够解决90%的爬虫问题了&#xff0c;那么scrapy是为了解决剩下的10%的问题么&#xff0c;不是&#xff0c;scrapy框架能够让我们的爬虫效率更高 什么是scrapy Scrapy是一个为了…

tee漏洞学习-翻译-3:TrustZone exploit for MSM8974

原文&#xff1a;http://bits-please.blogspot.com/2015/08/full-trustzone-exploit-for-msm8974.html 在这篇博文中&#xff0c;我们将介绍利用上一篇文章中描述的 TrustZone 漏洞的完整过程。 在开发此漏洞时&#xff0c;我只使用了我值得信赖的&#xff08;个人&#xff0…

120.乐理基础-五线谱-五线谱的多声部与指法问题

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;119.乐理基础-五线谱-五线谱的标记-CSDN博客 五线谱多声部与简谱的多声部一样&#xff1a;简谱的多声部 五线谱多声部例子&#xff1a;钢琴谱 另一个例子&#xff1a;在纵向上有多个音符 然后放大之后&#xff0c…

【51单片机】利用【时间延迟】的原理规避【按键抖动问题】

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 本章是51LCD单片机设计的一个环节&#xff0c;完整可前往相应博客查看完整传送门 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下…

详解CC++内存管理(new和delete)

文章目录 写在前面1. C&C内存分布2. C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free3. C内存管理方式&#xff08;语法&#xff09;3.1 new/delete操作内置类型3.2 new和delete操作自定义类型 4. new和delete的实现原理4.1 operator new与operator delete…

数据结构——6.2 图的存储与基本操作

6.2 图的存储与基本操作 概念 图的存储 邻接矩阵存有向图和无向图 根据邻接矩阵求度&#xff1a; 无向图&#xff1a;第i个结点的度 第i行 (或第列) 的非零元素个数 有向图&#xff1a; 第i个结点的出度 第i行的非零元素个数 第i个结点的入度 第i列的非零元素个数 第i个结…

Stable Diffusion教程——stable diffusion基础原理详解与安装秋叶整合包进行出图测试

前言 在2022年&#xff0c;人工智能创作内容&#xff08;AIGC&#xff09;成为了AI领域的热门话题之一。在ChatGPT问世之前&#xff0c;AI绘画以其独特的创意和便捷的创作工具迅速走红&#xff0c;引起了广泛关注。随着一系列以Stable Diffusion、Midjourney、NovelAI等为代表…