趋近智
缺失数据在数据集中是一个常见问题。虽然移除含有缺失数据的行或列可以是一个简单的解决方案,但这通常会以丢失宝贵信息为代价。例如,如果某一列只有少量缺失值,或者某一行在许多值中仅缺少一个,那么完全移除它们可能会大大缩小数据集的规模和信息量。解决这一挑战并保留数据的一种方法是填充(imputation),它涉及用合理的值来补齐缺失数据。
基础值填充策略依赖于使用同一列(特征)中非缺失值的统计汇总信息。其想法是用一个代表该特征“中心”或“最典型”的值来填补空白。接下来我们看看三种最常用的方法:均值填充、中位数填充和众数填充。
均值就是一组数字的算术平均值。计算方法是将一列中所有可用值相加,然后除以这些值的数量。
均值=非缺失值的数量所有非缺失值的和何时使用: 均值填充通常用于数值型列(如身高、温度或价格),这些数据没有极端异常值,并且大致呈对称分布(如钟形曲线)。
例子: 假设有一个'Temperature'(温度)列,值为 [25, 28, NaN, 30, 27]。
25, 28, 30, 27。NaN 替换为 27.5。该列变为 [25, 28, 27.5, 30, 27]。注意事项: 均值对异常值很敏感。单个非常高或非常低的值会大大拉动均值向其方向偏移,这可能使填充值不太能代表典型的数据点。
中位数是数据集中按升序排列后的中间值。如果值的数量是偶数,则中位数是中间两个值的平均值。
何时使用: 中位数填充也用于数值型列。当数据包含明显的异常值或呈偏斜分布(即一侧有长尾)时,它通常优于均值。中位数受极端值的影响较小。
例子: 假设有一个'Income'(收入)列,值为 [45000, 50000, NaN, 48000, 150000]。值 150000 是一个异常值。
45000, 50000, 48000, 150000。[45000, 48000, 50000, 150000]。48000 和 50000)。NaN 替换为 49000。该列变为 [45000, 50000, 49000, 48000, 150000]。请注意,中位数(49000)比均值更接近大部分数据(45000、48000、50000)。均值将是 (45000+50000+48000+150000)/4=293000/4=73250,它受到异常值的严重影响。
众数是数据集中出现频率最高的值。一个数据集可以有一个众数、多个众数(多模态),或者如果所有值出现的频率相同,则没有众数。
何时使用: 众数填充是类别型列(如“颜色”、“国家”、“是/否”)的标准选择。您无法为非数值类别计算有意义的均值或中位数。它有时也可用于数值离散数据,并且值代表计数或特定类别(例如,汽车的车门数量)。
例子: 假设我们有一个'Shirt_Color'(衬衫颜色)列:['Blue', 'Red', 'Blue', NaN, 'Green', 'Red', 'Blue']。
['Blue', 'Red', 'Blue', 'Green', 'Red', 'Blue']。NaN 替换为 'Blue'。该列变为 ['Blue', 'Red', 'Blue', 'Blue', 'Green', 'Red', 'Blue']。用于确定“Shirt_Color”示例中众数(“Blue”)的频率计数。
注意事项: 如果类别型列有多个众数(例如,“蓝色”和“红色”都出现3次),您可能需要随机选择一个众数,或者使用更精密的填充方法。如果没有明确的众数,此方法可能信息量不足。
这里有一个简单的指导原则:
虽然均值、中位数和众数填充简单快速,但它们也有局限性:
这些基础技术是一个起点。存在更高级的方法(如回归填充或K-近邻填充),它们尝试根据其他列预测缺失值,通常能提供更准确的结果,但这些方法更复杂,将在更高级的材料中介绍。目前,理解并应用均值、中位数和众数填充为在许多常见情况下处理缺失数据打下了良好的根基。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造