趋近智
如前所述,数据很少是完美无缺的。您会遇到的最常见缺陷之一是数据缺失。假设您正在预测房价,但有几套房子的面积没有记录。或者您正在对客户评论进行分类,而有些条目是空白的。大多数机器学习 (machine learning)算法都要求数据集完整;它们本身不知道如何处理这些空缺。向它们提供含有缺失值的数据通常会导致错误或无法预料的结果。因此,处理缺失数据是数据准备中的一个基本步骤。
在处理缺失值之前,您需要找到它们。缺失数据可以以多种形式出现:
NaN(非数字),将缺失的对象或字符串表示为 None 或 null。这些通常最容易自动检测到。""。这可能需要进行特定检查。999、-1、"N/A"、"?" 或 "Unknown" 等特定代码来表示缺失信息。查阅任何可用的数据文档或元数据以了解特定数据集中缺失值的编码方式很重要。如果存在此类代码,您需要告知工具将其视为缺失值。Pandas 等库在 Python 中提供了自动检测标准空值(NaN、None)的功能,使识别更容易。但是,请警惕非标准占位符。快速查看每列中的唯一值通常可以帮助发现这些自定义代码。
一旦识别出缺失数据,您有几种主要方法来处理它们。最好的方法取决于具体情况、缺失数据的量及其对您分析的潜在影响。
一种直接的方法是简单地移除缺失的数据。这可以通过两种方式完成:
缺失数据(如 '?'、NaN)可以通过删除包含缺失值的行或通过填充(估算)估计值来处理。如果特征大部分缺失,删除列是另一种选择。
填充不是移除数据,而是用替代值填补缺失值。这可以保留您的样本量。简单的填充方法是初学者的常见起点:
[25, NaN, 28, 19],则 (25 + 28 + 19) / 3 的均值为 72 / 3 = 24。NaN 将被 24 替换。[25, NaN, 28, 19, 100],则排序后的非缺失值为 [19, 25, 28, 100]。中位数是两个中间值的平均值 (25 + 28) / 2 = 26.5。NaN 将被 26.5 替换。(如果是奇数个值,中位数就是单个中间值)。["Sunny", "?", "Cloudy", "Sunny", "Rainy"],则“Sunny”出现两次,而“Cloudy”和“Rainy”各出现一次。众数是“Sunny”,因此 ? 将被“Sunny”替换。简单填充的优点:
简单填充的缺点:
尽管存在这些缺点,但简单填充是您数据准备工具箱中的一个有用工具,尤其是在刚开始时。更复杂的技术存在,例如根据其他特征预测缺失值(回归填充)或使用相似数据点的值(K-最近邻填充),但这些会增加复杂性,通常在后续内容中讲述。
没有单一的“最佳”方法来处理缺失数据;选择涉及权衡,并取决于您的具体情况:
通常好的做法是尝试几种合理的方法(例如,如果缺失数据很少,比较中位数填充与行删除),并在评估期间查看每种方法如何影响模型的性能。无论您选择哪种方法,请务必记录下来。这有助于确保可复现性,并允许您解释对最终结果的潜在影响。
正确处理缺失值可确保您的算法接收完整数据,从而防止错误并使其更有效地学习模式。这是处理策展教科书示例之外的数据的实际必要条件。
这部分内容有帮助吗?
isna()、isnull())和常用策略(dropna()、fillna())。© 2026 ApX Machine LearningAI伦理与透明度•