使用 Python 进行机器学习:数据预处理技术
扫描二维码
随时随地手机看文章
机器学习仍然是发展最快、需求量最大的技术领域之一。机器学习是人工智能的一个分支,它使计算机系统能够学习和采用类似人类的特质,最终导致人工智能机器的发展。 下表列出了人工智能领域中,机器学习可以赋予计算机的八种关键类人特质。
人力素质 |
人工智能学科(使用机器学习方法) |
视觉 |
计算机视觉 |
演讲 |
自然语言处理 (NLP) |
运动 |
机器人 |
理解 |
知识表示与推理 |
触碰 |
触觉 |
情商 |
情感计算(又称情感人工智能) |
创造力 |
生成对抗网络 (GAN) |
决策 |
强化学习 |
然而,创建人工智能的过程需要大量数据。在机器学习中,我们拥有的数据越多,用于训练模型的数据越多,模型(AI 代理)在处理给定提示或输入以及最终完成训练任务方面的表现就越好。
这些数据并非以原始形式输入到机器学习算法中。在输入到学习算法之前,它(数据)必须先经过各种检查和数据清理和准备阶段。我们将机器学习生命周期的这一阶段称为数据预处理阶段。顾名思义,此阶段包括将应用于数据集(值的行/列)的所有操作和程序,以使其处于清洁状态,以便机器学习算法可以接受它并开始训练/学习过程。
本文将讨论和研究机器学习中最流行的数据预处理技术。我们将探索各种方法来清理、转换和扩展我们的数据。所有探索和实际示例都将使用 Python 代码片段完成,以指导您亲身体验如何有效地将这些技术应用于您的机器学习项目。
为什么要预处理数据?
预处理数据的字面整体原因是为了让机器学习算法接受数据,从而开始训练过程。但是,如果我们看看机器学习框架本身的内在工作原理,就可以提供更多理由。下表讨论了为后续机器学习任务预处理数据的 5 个关键原因(优势)。
原因 |
解释 |
提高数据质量 |
数据预处理可确保您的数据一致、准确且可靠。 |
提高模型性能 |
数据预处理允许您的 AI 模型在更深层次、更准确的层面上捕捉趋势和模式。 |
提高准确性 |
数据预处理可以使模型评估指标更好,并反映 ML 模型更准确的概述。 |
减少训练时间 |
通过输入已清理的算法数据,您可以让算法以最佳水平运行,从而减少计算时间并消除对计算资源不必要的压力。 |
特征工程 |
通过预处理数据,机器学习从业者可以衡量某些特征对模型的影响。这意味着机器学习从业者可以选择与模型构建最相关的特征。 |
我们将利用以下框架来处理数据预处理的实际示例:
NumPy
熊猫
科学学习
处理缺失值
处理缺失值最流行的技术是删除和归纳。值得注意的是,无论您尝试执行什么操作,如果计算或过程中至少有一个空值(NaN),则整个操作将失败并计算为 NaN(空/缺失/错误)值。
移动
删除包含缺失值的行或列。这通常在缺失数据占整个数据集的比例相对较小时执行。
例子
输出
归责
即我们用替代值替换数据中的缺失值。替代 值通常是该列数据的平均值、中位数或众数。这个过程的术语是归纳。
例子
输出
处理噪声数据
当我们的数据中有异常值或不相关的数据点时,我们就说我们的数据是有噪声的 。这种噪声 会扭曲我们的模型,从而扭曲我们的分析。处理噪声数据的常见预处理技术包括平滑和分箱。
平滑
这种数据预处理技术涉及采用移动平均等操作来减少噪音和识别趋势。这样就可以封装数据的本质。
例子
输出
分箱
这是统计学中常见的过程,遵循机器学习数据预处理中的相同底层逻辑。它涉及将数据分组,以减少微小观察误差的影响。
例子
输出
数据转换
这种数据预处理技术在帮助塑造和指导需要数字特征作为输入的算法以实现最佳训练方面起着至关重要的作用。这是因为数据转换涉及将我们的原始数据转换为适合我们的机器学习算法使用的格式或范围。这是基于距离的机器学习算法的关键步骤。
关键的数据转换技术是规范化和标准化。正如这些操作的名称所暗示的那样,它们用于将我们的特征内的数据重新缩放到标准范围或分布。
正常化
这种数据预处理技术会将我们的数据缩放到 [0, 1](包含两个数字)或 [-1, 1](包含两个数字)的范围。当我们的特征具有不同的范围并且我们希望将它们带到一个共同的范围内时,它很有用。
例子
输出
标准化
标准化将把我们的数据缩放到平均值为 0、标准差为 1。当我们的特征中包含的数据具有不同的测量单位或分布时,它很有用。
例子
输出
编码分类数据
我们的机器学习算法通常要求特征矩阵(输入数据)采用数字形式,即数值/定量。但是,我们的数据集可能包含文本(分类)数据。因此,在将数据输入机器学习算法之前,必须将所有分类(文本)数据转换为数字格式。处理分类数据最常用的技术包括独热编码( OHE )和标签编码。
独热编码
这种数据预处理技术用于将分类值转换为二进制向量。这意味着每个唯一类别都将成为数据框中的列,而包含该值的观察值(行)的存在与否由新列中的二进制 1 或 0 表示。
例子
输出
标签编码
这是将分类值转换为整数标签的时候。本质上,每个唯一类别都被分配一个唯一的整数来表示。
例子
输出
这告诉我们标签编码如下:
· ‘蓝色’ -> 0
· ‘绿色’ -> 1
· ‘红色’ -> 2
PS,数值分配是从零索引的(与 Python 中的所有集合类型一样)
特征提取与选择
正如这种数据预处理技术的名称所暗示的,特征提取/选择涉及机器学习从业者从数据中选择最重要的特征,而特征提取则将数据转换为一组简化的特征。
特征选择
这种数据预处理技术有助于我们从数据集中识别和选择对模型影响最大的特征。最终,选择最佳特征将提高我们模型的性能并减少过度拟合。
相关矩阵
这个矩阵可以帮助我们识别高度相关的特征,从而使我们能够删除冗余特征。“相关系数的范围从 -1 到 1,其中越接近 -1 或 1 的值表示相关性越强,而越接近 0 的值表示相关性越弱或没有相关性”。
例子
输出 1
输出 2
卡方统计量
卡方统计量是一种衡量两个分类变量独立性的检验方法。当我们对分类数据进行特征选择时,它非常有用。它计算特征的 p 值,告诉我们特征对于当前任务有多大用处。
例子
输出
卡方分数的输出由两个数组组成:
· 第一个数组包含每个特征的卡方统计值。
· 第二个数组包含与每个特征对应的 p 值。
在我们的示例中:
· 对于第一个特征:
1. 卡方统计值为 0.0
2. p 值为 1.0
· 对于第二个特征:
1. 卡方统计值为 3.0
2. p 值约为 0.083
卡方统计量衡量特征与目标变量之间的关联。卡方值越高,表示特征与目标之间的关联越强。这告诉我们,所分析的特征对于引导模型达到所需的目标输出非常有用。
p 值测量在特征和目标独立的零假设下观察到卡方统计量的概率。本质上,较低的 p 值(通常 < 0.05)表示特征和目标之间的关联具有统计意义。
对于我们的第一个特征,卡方值为 0.0,p 值为 1.0,从而表示与目标变量没有关联。
对于第二个特征,卡方值为 3.0,相应的 p 值约为 0.083。这表明我们的第二个特征和目标变量之间可能存在某种关联。请记住,我们处理的是虚拟数据,而在现实世界中,数据会给你带来更多的变化和分析点。
特征提取
这是一种数据预处理技术,允许我们通过将数据转换为一组新特征来降低数据的维度。从逻辑上讲,通过采用特征选择和提取技术可以大大提高模型性能。
主成分分析(PCA)
PCA 是一种数据预处理降维技术,它将我们的数据转换为一组直角(正交)分量,从而捕获特征中存在的最大差异。
例子
输出
由此,我们成功探索了 Python 机器学习任务中最常用的各种数据预处理技术。
结论
在本文中,我们探讨了使用 Python 进行机器学习的流行数据预处理技术。我们首先了解了数据预处理的重要性,然后研究了与原始数据相关的常见挑战。然后,我们通过 Python 中的实际示例深入研究了各种预处理技术。
最终,数据预处理是机器学习项目生命周期中不可跳过的一步。即使不需要对数据进行任何更改或转换,也值得在适用的情况下将这些技术应用于数据。因为这样做可以确保数据得到清理和转换,以适应机器学习算法,从而提高后续机器学习模型开发因素(例如模型准确性、计算复杂性和可解释性)的效率。
总之,数据预处理为成功的机器学习项目奠定了基础。通过关注数据质量并采用适当的预处理技术,我们可以充分发挥数据的潜力,并构建能够提供有意义的见解和可操作结果的模型。