添加缺失指示器#

The AddMissingIndicator() 添加一个二进制变量,指示观察值是否缺失(缺失指示器)。它为分类变量和数值变量都添加缺失指示器。

你可以通过将变量列表传递给 variables 参数来选择应为其创建缺失指示器的变量。或者,插补器将自动选择所有变量。

imputer 可以选择将缺失指示器添加到所有变量,或者仅添加到训练集中有缺失数据的那些变量。您可以使用参数 missing_only 更改此行为。

如果 missing_only=True,缺失指示器将仅添加到训练集中存在缺失数据的那些变量。这意味着,如果您向 variables 传递了一个变量列表,而其中一些变量没有缺失数据,则不会为它们添加缺失指示器。如果您的列表中的所有变量都必须获得其缺失指示器,请确保设置 missing_only=False

在未传递要插补的变量列表时,建议使用 missing_only=True

以下是使用房价数据集的代码示例(关于数据集的更多详情 在此)。

首先,让我们加载数据并将其分为训练集和测试集:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split

from feature_engine.imputation import AddMissingIndicator

# Load dataset
data = pd.read_csv('houseprice.csv')


# Separate into train and test sets
X_train, X_test, y_train, y_test = train_test_split(
data.drop(['Id', 'SalePrice'], axis=1), data['SalePrice'], test_size=0.3, random_state=0)

现在我们设置输入器,为4个指示的变量添加缺失指示符:

# set up the imputer
addBinary_imputer = AddMissingIndicator(
variables=['Alley', 'MasVnrType', 'LotFrontage', 'MasVnrArea'],
)

# fit the imputer
addBinary_imputer.fit(X_train)

因为我们保留了 missing_only 的默认值,AddMissingIndicator() 将检查上述变量在 X_train 中是否有缺失数据。如果有,将为所有 4 个变量添加缺失指示器。如果其中任何一个在 X_train 中没有缺失数据,则只会为剩余的 3 个变量添加缺失指示器。

我们可以通过查看 AddMissingIndicator() 的属性 variables_ 中的变量列表,来了解哪些变量将会有缺失指示符。

现在,我们可以继续添加缺失的指示符:

# transform the data
train_t = addBinary_imputer.transform(X_train)
test_t = addBinary_imputer.transform(X_test)

train_t[['Alley_na', 'MasVnrType_na', 'LotFrontage_na', 'MasVnrArea_na']].head()
../../_images/missingindicator.png

请注意,在添加缺失指示符后,如果我们计划使用这些变量来训练机器学习模型,我们仍然需要替换原始变量中的 NA。

提示#

缺失指示器通常与随机抽样、均值或中位数插补,或频繁类别插补一起使用。

其他资源#

在下面的 Jupyter 笔记本中,您将找到更多关于 AddMissingIndicator() 功能的详细信息,包括如何使用 missing_indicator 参数以及如何自动选择变量。

有关此方法和其他特征工程方法的更多详细信息,请查看以下资源:

../../_images/feml.png

机器学习的特征工程#











或者阅读我们的书:

../../_images/cookbook.png

Python 特征工程手册#














我们的书籍和课程都适合初学者和更高级的数据科学家。通过购买它们,您正在支持 Feature-engine 的主要开发者 Sole。