添加缺失指示器#
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()
请注意,在添加缺失指示符后,如果我们计划使用这些变量来训练机器学习模型,我们仍然需要替换原始变量中的 NA。
提示#
缺失指示器通常与随机抽样、均值或中位数插补,或频繁类别插补一起使用。
其他资源#
在下面的 Jupyter 笔记本中,您将找到更多关于 AddMissingIndicator()
功能的详细信息,包括如何使用 missing_indicator
参数以及如何自动选择变量。
有关此方法和其他特征工程方法的更多详细信息,请查看以下资源:
或者阅读我们的书:
我们的书籍和课程都适合初学者和更高级的数据科学家。通过购买它们,您正在支持 Feature-engine 的主要开发者 Sole。