特征工程 - 处理缺失值和异常值

处理缺失值

接下来,让我们看看如何使用Data wrangler来处理特征列中的缺失值。

children列表示成人随行儿童的数量,因为 children 列中存在一些缺失值。大多数访客没有随行儿童,因此可以将缺失数据替换为儿童数量 = 0。

搜索Handle missing转换:

image-20240904225625041

选择Filling missing,并搜索children列,设置成0:

image-20240904225700945

点击添加。

遍历 country 列可以发现,大多数客户来自欧洲。因此,country 列中的所有缺失值都被替换为出现次数最多的国家 - 葡萄牙(PRT)。

因此,对于缺失的 country 值,让我们根据值计数将其替换为 PRT

image-20240904230335561

此外,餐食类型列 mealUndefined 类别。为了解决这个问题,我们可以将 Undefined 值更改为使用最多的 BB = Bread & Breakfast,通过实现一个自定义 pyspark 转换来实现,如下所示。

image-20240904231218165

上述转换中使用的自定义代码片段如下:

from pyspark.sql.functions import when

df = df.withColumn('meal', when(df.meal == 'Undefined', 'BB').otherwise(df.meal))

处理异常值

机器学习模型对特征值的分布和范围很敏感。异常值或罕见值可能会对模型准确性产生负面影响,并导致训练时间更长。

当我们定义"处理异常值"转换步骤时,用于检测异常值的统计数据是在定义此步骤时Data Wrangler中可用的数据上生成的。在运行Data Wrangler作业时,将使用相同的统计数据。

Data Wrangler的"处理异常值"组有5种可应用的转换:

  • Robust standard deviation numeric outliers
  • Standard Deviation Numeric Outliers(标准差数值异常值)
  • Quantile Numeric Outliers(分位数数值异常值)
  • Min-Max Numeric Outliers(最小-最大数值异常值)
  • Replace Rare(替换罕见值)

有关这些转换的详细信息,请参阅此处

添加一个transform,选择"Handle outliers”:

image-20240904231552836

并选择Standard Deviation Numeric Outliers转换类型:

image-20240905113328543

选择以下几列:

image-20240905113534166

最后进行添加。