接下来,让我们看看如何使用Data wrangler来处理特征列中的缺失值。
children列表示成人随行儿童的数量,因为 children
列中存在一些缺失值。大多数访客没有随行儿童,因此可以将缺失数据替换为儿童数量 = 0。
搜索Handle missing
转换:
选择Filling missing
,并搜索children列,设置成0:
点击添加。
遍历 country
列可以发现,大多数客户来自欧洲。因此,country
列中的所有缺失值都被替换为出现次数最多的国家 - 葡萄牙(PRT)。
因此,对于缺失的 country
值,让我们根据值计数将其替换为 PRT
。
此外,餐食类型列 meal
有 Undefined
类别。为了解决这个问题,我们可以将 Undefined
值更改为使用最多的 BB
= Bread & Breakfast
,通过实现一个自定义 pyspark 转换来实现,如下所示。
上述转换中使用的自定义代码片段如下:
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种可应用的转换:
有关这些转换的详细信息,请参阅此处 。
添加一个transform,选择"Handle outliers”:
并选择Standard Deviation Numeric Outliers
转换类型:
选择以下几列:
最后进行添加。