机器学习中的缺失值处理

机器学习的数据预处理阶段,处理包含NaN或特定记录无值的数据集是一项至关重要且棘手的任务。大多数机器学习算法在数据集中存在缺失值时表现不佳。面对这种情况,通常有两种解决方案:移除包含缺失值的样本或用某种策略插补缺失值。频繁移除缺失值并非处理机器学习问题的最佳方法,因为这些数据可能包含有用信息。因此,最佳方案通常是插补缺失值。

由于缺失值插补是解决各种机器学习问题的必要步骤,实时数据集中很有可能存在缺失值。本文将探讨与机器学习中缺失数据插补相关的前五个面试问题,以及它们背后的核心直觉和工作机制。让开始逐一探索和解答面试问题。

缺失值插补面试问题

机器学习中,完整案例分析是一种技术,它涉及从数据集中删除或移除所有包含缺失值的样本。由于插补缺失值会消耗大量计算资源和时间,有时在时间复杂度较高的情况下,可以使用这种方法,因为它易于编码且速度更快。

# 导入所需库 import numpy as np import pandas as pd # 导入数据集 df = pd.read_csv('Iris.csv') # 了解数据集中包含缺失值的样本数量 print(df.isnull().sum()) # 删除缺失数据 df = df.dropna()

尽管完整案例分析不是处理缺失数据的最佳解决方案,因为通过删除缺失数据,也会丢失部分数据信息。有时被删除的缺失数据可能包含其他数据所没有的重要信息。因此,在大多数情况下,处理缺失数据时不推荐使用完整案例分析,除非没有其他选择。据研究者称,当数据集中缺失的数据少于5%时,应考虑使用这些技术。

大多数时候,当数值数据中存在缺失值时,均值和中位数插补是最常用的方法。均值插补通过特定列的均值来插补值,而中位数插补通过列数据的中位数来插补缺失值。当数据集中存在异常值时,更倾向于使用中位数插补。因为均值插补会考虑异常值,从而使得特定列的均值产生偏差。而中位数插补计算的是列的中位数,因此不会受到异常值的太大影响。因此,对于包含异常值的数值数据,更倾向于使用中位数插补。

基本上有两种类型的缺失值插补:单变量和多变量插补。在单变量缺失值插补中,仅使用相应缺失值的特定列来插补缺失值。例如,如果Age列中存在缺失值,则仅使用Age列的值来插补该缺失值,不会使用数据集中的其他列。而多变量插补则是使用数据集中的多个列的值来插补缺失值。例如,如果Age列中存在缺失值,则该缺失值将使用Age列和其他数据集列的值来插补。均值、中位数和最频繁值是单变量缺失数据插补的例子,而KNN插补器和迭代插补器是多变量插补的例子。

KNN插补器是一种多变量插补技术,用于插补数据集中的缺失值。这里计算数据点之间的欧几里得距离,并根据欧几里得距离考虑邻居来插补缺失数据。一旦根据欧几里得距离确定了缺失数据的邻居,然后计算邻居数据点值的均值,并用均值插补缺失值。

# 欧几里得距离公式

关键要点

  • 完整案例分析是一种删除缺失数据的技术。它不是最推荐的方法,因为从数据中删除缺失值并不是最佳方法。
  • 当数据集中存在异常值时,不推荐使用均值插补;相反,应使用中位数插补。
  • KNN和迭代插补器是涉及更高计算的多变量插补技术。迭代插补器在随机缺失的数据上表现特别出色。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485