点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

一、背景

在现实背景中,我们的数据集往往存在各种各样的问题,如果不对数据进行预处理,模型的训练就无法开始。

在对数据进行预处理阶段我们往往要解决一下问题

  1. 数据中存在缺失值

  2. 连续特征是否要离散化

  3. 离散特征的编码

  4. 特征量纲不同,不具可比性

二、缺失值处理

由于各种各样原因,现实中的许多数据集包含缺失数据,这样的数据是无法直接用于训练的,因此我们需要对缺失值进行处理。

最简单粗暴的方法就是把含有缺失值的样本丢弃,这样可以避免人为填充带来的噪声。这样做可能会丢失一些很重要的信息,特别是数据量不多或者数据价值很高的数据来说,直接丢弃就太浪费了。因此我们可以旋转某种合适的策略对缺失值进行适当的填充。

一般来说,我们可以使用平均值、中值、分位数、众数等替代。如果想要更好的填充效果,可以考虑利用无缺失值的数据建立模型,通过模型来选择一个最适合的填充值,但如果缺失的属性对于模型可有可无,那么得出来的填充值也将不准确。我们还可以使用KNN来选择最相似的样本进行填充。除此以外,缺失信息也可以作为一种特殊的特征表达,例如人的性别,男、女、不详可能各自有着不同的含义。

三、连续特征离散化

特征可以被分为连续特征和离散特征,但有些时候我们可以会将连续特征离散化,例如,如果我们只关心年龄是否大于18,那么我们会将该特征二值化。这样不仅可以使得数据变得稀疏降低过拟合的情况,还可以加快学习的速度,并且令模型对异常数据不那么敏感。离散化方法分为有监督和无监督两类。

等宽、等频的离散化方法是无监督方法的典型代表,根据使用者给定的宽度或频数将连续的区间划分成小的区间的方法对分布不均匀的数据不适用,对异常点比较敏感。无监督离散化方法中还有基于聚类分析的离散化,它通过对某一特征的值进行聚类,由此得到离散区间的划分。

有监督离散化的方法有基于熵的离散化方法,它是一种自顶向下分裂的离散化方法,它根据信息熵在所有可能的区间断点中选取最优的划分。

四、离散特征编码

特征虽然分为连续特征和离散特征,但是计算机都是将所有特征作为连续特征处理,因此如果我们想使用离散特征,必须对离散特征进行独热编码或哑编码。假设我们把年龄划分为[0,20),[20,40),[40,60),[60,+∞)四个区间并用0,1,2,3表示。使用独热编码特征会被编码为

[0,20) 1 0 0 0
[20,40) 0 1 0 0
[40,60) 0 0 1 0
[60,+∞) 0 0 0 1

如果是哑编码则会编码为

[0,20) 1 0 0
[20,40) 0 1 0
[40,60) 0 0 1
[60,+∞) 0 0 0

具体选择哪种编码可以参照知乎中王赟的回答

如果你不使用regularization,那么one-hot encoding的模型会有多余的自由度。这个自由度体现在你可以把某一个分类型变量各个值对应的权重都增加某一数值,同时把另一个分类型变量各个值对应的权重都减小某一数值,而模型不变。在dummy encoding中,这些多余的自由度都被统摄到intercept里去了。这么看来,dummy encoding更好一些。
如果你使用regularization,那么regularization就能够处理这些多余的自由度。此时,我觉得用one-hot encoding更好,因为每个分类型变量的各个值的地位就是对等的了。”

五、归一化和标准化

归一化和标准化都可以使特征无量纲化,归一化使得数据放缩在[0,1]之间并且使得特征之间的权值相同,改变了原数据的分布,而标准化将不同特征维度的伸缩变换使得不同度量之间的特征具有可比性。同时不改变原始数据的分布。常见的归一化方法有min-max标准化和z-score标准化。

min-max标准化根据特征的最大最小值将数据放缩到[0,1]之间

z-score标准化利用数据的均值和标准差将数据变为标准正态分布

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

干货|了解机器学习常用数据预处理相关推荐

  1. 机器学习之数据预处理——归一化,标准化

    机器学习之数据预处理--归一化,标准化 基础知识 1.什么是特征预处理 2.预处理方法 : 3.预处理API: 数据的标准化(normalization)和归一化 数据的标准化 数据归一化 1 把数变 ...

  2. 机器学习PAL数据预处理

    机器学习PAL数据预处理 本文介绍如何对原始数据进行数据预处理,得到模型训练集和模型预测集. 前提条件 完成数据准备,详情请参见准备数据. 操作步骤 登录PAI控制台. 在左侧导航栏,选择模型开发和训 ...

  3. 机器学习之数据预处理——数据清洗(缺失值、异常值和重复值的处理)

    机器学习之数据预处理--数据清洗缺失值.异常值和重复值的处理 基础知识 技术点总结 数据列缺失的处理方法 1.丢弃(缺失值处理) 1.生成一份随机数据 2.查看哪些值缺失 3.获得含有NA的列 4.获 ...

  4. 机器学习之数据预处理——特征编码(标签编码,独热编码)

    机器学习之数据预处理--特征编码 数据预处理--特征编码 离散数据的编码 标签编码 sklearn LabelEncoder(使用fit_transform函数) sklearn LabelEncod ...

  5. 机器学习之数据预处理

    在sklearn之数据分析中总结了数据分析常用方法,接下来对数据预处理进行总结 当我们拿到数据集后一般需要进行以下步骤: (1)明确有数据集有多少特征,哪些是连续的,哪些是类别的 (2)检查有没有缺失 ...

  6. 数据分析与挖掘-python常用数据预处理函数

    数据预处理往往在数据分析和数据挖掘领域占到了很大的比重,甚至在机器学习这些海量数据处理的场合,数据预处理也是最核心的工作.介绍几个预处理阶段常用的库函数. 1.interpolate 插值函数,Sci ...

  7. 负数如何归一化处理_机器学习之数据预处理

    第一节:前言 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已.由此可见,特征工程在机器学习中占有相当重要的地位. 特征工程:利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能 ...

  8. 数据标准化处理方法_机器学习系列-数据预处理-数据标准化(归一化)-理论

    在做一个具体的机器学习项目中,拿到收集到的数据后,一般都是需要做数据预处理,而标准化(暂时不考虑标准化和归一化的主要区别)是数据预处理中一个比较重要的环节,那么为什么需要对数据进行标准化处理呢? 数据 ...

  9. 机器学习中数据预处理——标准化/归一化方法(scaler)

    由于工作问题比较忙,有两周没有总结一下工作学习中遇到的问题. 这篇主要是关于机器学习中的数据预处理的scaler变化. 工作中遇到的问题是:流量预测问题,拿到的数据差距非常大,凌晨的通话流量很少几乎为 ...

最新文章

  1. 标准c语言怎么绘图,C语言绘图问题
  2. 开发者进阶宝典,HarmonyOS 职业认证全奉上
  3. 辽宁省风力发电行业“十四五”前景规划及竞争策略分析报告2022-2028年版
  4. Vivado 自定义VHDL的IP核
  5. 自定义View 中很关键的问题View获取宽/高是0 的解决办法
  6. 拼写检查器——朴素贝叶斯应用
  7. 用python写Hello World
  8. 【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网
  9. VS Code | setting.json配置
  10. Pycharm 恢复到默认设置
  11. 学习 spring-cloud-aibaba第九篇,综合应用微信小程序《背诗词》
  12. 跑跑卡丁车蛋白石盒喜当托儿纪念,2022/06/12,22:59:24
  13. python大战机器学习——人工神经网络
  14. uniapp支付之APP微信支付unicloud版(附源码)
  15. 福布斯2011中国富豪榜:李彦宏成内地首富
  16. 【MATLAB图像融合】[7] 区域能量算法
  17. JAVA获取全国邮编和长途区号
  18. 想在image上画一个粗线,如何在鼠标未按下去的时候让鼠标显示为一个红色半透明的圆形呢?...
  19. java 加密解密 工具包_java加密解密工具类
  20. java 获取cup序列号_Qt获取CPU编号和硬盘序列号

热门文章

  1. 基于GAN的图像水印去除器,效果堪比PS高手
  2. Google又放大招:高效实时实现视频目标检测 | 技术头条
  3. AI一分钟 | 特斯拉做空者频频“找茬”;自动驾驶汽车事故调查:人为是主因...
  4. IDEA + Vim = 得劲
  5. Spring解析,加载及实例化Bean的顺序(零配置)
  6. 如何参与一个顶级开源项目
  7. 使用 Nginx 搭建图片服务器
  8. 工作发狂:Mybatis 中$和#千万不要乱用!
  9. 线性矩阵不等式LMI的运用与Lipschitz非线性系统观测器的设计
  10. 从0梳理1场CV大赛(Top 3%)!