数据挖掘中的数据预处理:步骤、缺失值插补、数据标准化
已发表: 2020-12-30数据科学家工作中最耗时的部分是准备和预处理手头的数据。 我们在现实生活场景中获得的数据并不干净,不适合建模。 在输入机器学习模型之前,需要对数据进行清理、转换为某种格式并进行转换。
在本教程结束时,您将了解以下内容
- 为什么要进行数据预处理
- 数据清洗
- 缺失值插补
- 数据标准化
- 离散化
目录
为什么要进行数据预处理?
当通过抓取网站并从其他数据源收集数据来检索数据时,通常会充满差异。 它可能是格式问题、缺失值、垃圾值和文本,甚至是数据中的错误。 需要完成几个预处理步骤,以确保输入模型的数据符合要求,以便模型可以学习和泛化它。
数据清洗
第一步也是最重要的一步是清理数据中的不规则性。 如果不执行此步骤,我们就无法从数据统计中获得太多意义。 这些可能是格式问题、垃圾值和异常值。
格式问题
大多数情况下,我们需要数据采用表格格式,但事实并非如此。 数据可能缺少或不正确的列名、空白列。 此外,在处理图像和文本等非结构化数据时,将 2D 或 3D 数据加载到 Dataframes 中进行建模变得至关重要。
垃圾值
许多实例或完整列可能会将某些垃圾值附加到实际所需的值。 例如,考虑一列“rank”,其值如下:“#1”、“#3”、“#12”、“#2”等。现在,删除前面的所有“#”很重要字符,以便能够将数值提供给模型。
异常值
很多时候,某些数值要么太大要么太低,而不是特定列的平均值。 这些被视为异常值。 异常值需要特殊处理,是处理的敏感因素。 这些异常值可能是测量误差,也可能是真实值。 它们要么需要完全删除,要么需要单独处理,因为它们可能包含很多重要信息。
缺失值
您的数据很少会包含每个实例的所有值。 许多值丢失或被垃圾条目填充。 这些缺失值需要处理。 这些值可能有多种原因可能会丢失。 它们可能由于某些原因(例如传感器错误或其他因素)而丢失,或者它们也可能完全随机丢失。
阅读:印度的数据挖掘项目
掉落
最直接和最简单的方法是删除缺少值的行。 这样做有许多缺点,例如丢失关键信息。 当您拥有的数据量很大时,删除缺失值可能是一个很好的步骤。 但如果数据少,缺失值多,则需要更好的方法来解决这个问题。
均值/中值/众数插补
估算缺失值的最快方法是简单地估算列的平均值。 但是,它也有缺点,因为它扰乱了数据的原始分布。 您还可以估算通常优于简单平均值的中值或众数。
线性插值 & KNN
也可以使用更智能的方法来估算缺失值。 其中2个是使用多个模型的线性插值,将具有空白值的列视为要预测的特征。 另一种方法是使用 KNN 聚类。 KNN 对特定特征中的值进行聚类,然后分配最接近该聚类的值。

数据标准化
在具有多个数值特征的数据集中,所有特征可能不在同一尺度上。 例如,一个特征“距离”具有以米为单位的距离,例如 1300、800、560 等。另一个特征“时间”具有以小时为单位的时间,例如 1、2.5、3.2、0.8 等。所以,当这两个特征被馈送到模型中,它认为具有距离的特征具有更大的权重,因为它的值很大。 为了避免这种情况并获得更快的收敛速度,有必要将所有特征放在相同的规模上。
正常化
缩放特征的一种常用方法是对它们进行归一化。 它可以使用 Scikit-learn 的 Normalizer 来实现。 它不适用于列,但适用于行。 L2 归一化应用于每个观察值,以便一行中的值在缩放后具有单位范数。
最小最大缩放
Min Max 缩放可以使用 Scikit-learn 的 Min MaxScaler 类来实现。 它减去特征的最小值,然后除以范围,其中范围是原始最大值和原始最小值之间的差。 它保留了原始分布的形状,默认范围为 0-1。
标准缩放
Standard Scaler 也可以使用 Scikit-learn 的类来实现。 它通过减去均值然后缩放到单位方差来标准化特征,其中单位方差意味着将所有值除以标准差。 它使分布的平均值为 0,标准差为 1。
离散化
很多时候数据不是数字形式,而是分类形式。 例如,考虑一个特征“温度”,其值为“高”、“低”、“中”。 这些文本值需要以数字形式编码,以便模型能够对其进行训练。
分类数据
分类数据经过标签编码,以数字形式呈现。 因此,“高”、“中”和“低”可以标签编码为 3,2 和 1。分类特征可以是名义特征或有序特征。 序数分类特征是具有一定顺序的特征。 例如,在上述情况下,我们可以说 3>2>1 作为温度可以测量/量化。
但是,在一个示例中,无法测量具有“德里”、“查谟”和“阿格拉”等值的“城市”特征。 换句话说,当我们将它们标记为 3、2、1 时,我们不能说 3>2>1,因为“Delhi”>“Jammu”没有多大意义。 在这种情况下,我们使用 One Hot Encoding。
连续数据
具有连续值的特征也可以通过将值分箱到特定范围的箱中来离散化。 分箱是指根据连续值的范围将数值或连续特征转换为一组离散值。 当您想根据数据点所在的范围查看趋势时,这会派上用场。
例如,假设我们有 7 个孩子的分数,范围从 0 到 100。 现在,我们可以将每个孩子的分数分配到特定的“bin”。 现在我们可以分为 3 个 bin,范围为 0 到 50、51-70 和 71-100,分别属于 bin 1、2 和 3。 因此,该功能现在将仅包含这 3 个值之一。 Pandas 提供了 2 个函数来快速实现分箱:qcut 和 cut。
Pandas qcut 接受分位数并根据数据分布将数据点划分到每个 bin。
另一方面,Pandas cut 接受我们定义的自定义范围,并在这些范围内划分数据点。
相关阅读:机器学习中的数据预处理
学习世界顶尖大学的数据科学课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
结论
数据预处理是任何数据挖掘和机器学习任务中必不可少的步骤。 我们讨论的所有步骤当然不是全部,但确实涵盖了该过程的大部分基本部分。 NLP 和图像数据的数据预处理技术也不同。 确保尝试上述步骤的示例并在您的数据挖掘管道中实施。
如果您想了解数据科学,请查看 IIIT-B 和 upGrad 的数据科学 PG 文凭,该文凭专为在职专业人士而设,提供 10 多个案例研究和项目、实用的实践研讨会、与行业专家的指导、1-与行业导师面对面交流,400 多个小时的学习和顶级公司的工作协助。
什么是数据预处理,它的意义是什么?
这是一种以图像、文本、视频形式提供原始非结构化数据的技术。 首先对这些数据进行预处理,以消除不一致、错误和冗余,以便以后对其进行分析。
原始数据被转换成机器可以理解的相关数据。 预处理数据是转换数据以进行建模的重要步骤。 如果不进行处理,它实际上是没有用的。
数据预处理涉及哪些步骤?
数据预处理涉及完成整个过程的各个步骤。 首先对数据进行清理以去除噪声并填充缺失值。 在此之后,整合来自多个来源的数据以组合成一个数据集。 这些步骤之后是变换、归约和离散化。
原始数据的转换涉及对数据进行规范化。 归约和离散化基本上是处理减少数据的属性和维度。 接下来是压缩这一大组数据。
单变量和多变量方法有什么区别?
单变量方法是处理异常值的最简单方法。 它不概述任何关系,因为它是单个变量,其主要目的是分析数据并确定与之关联的模式。 均值、中位数和众数是在单变量数据中发现的模式示例。
另一方面,多变量方法用于分析三个或更多变量。 它比早期的方法更精确,因为与单变量方法不同,多变量方法处理关系和模式。 加法树、典型相关分析和聚类分析是执行多变量分析的一些方法。