DropFeatures#
The DropFeatures()
从原始数据框中删除用户指定的一组变量。用户可以传递单个变量作为字符串或要删除的变量列表。
DropFeatures()
提供了与 pandas.dataframe.drop 类似的功能,但不同之处在于 DropFeatures()
可以集成到 Scikit-learn 管道中。
这个变压器何时有用?
有时,我们通过结合数据集中的其他变量来创建新变量,例如,我们通过从 date_of_birth
中减去 date_of_application
来获得变量 age
。在我们获得新变量后,我们不再需要数据集中的日期变量。因此,我们可以在 Pipeline 中添加 DropFeatures()
来移除这些变量。
示例
让我们看看如何在泰坦尼克号数据集的示例中使用 DropFeatures()
。我们首先加载数据并将其分为训练集和测试集:
from sklearn.model_selection import train_test_split
from feature_engine.datasets import load_titanic
from feature_engine.selection import DropFeatures
X, y = load_titanic(
return_X_y_frame=True,
handle_missing=True,
)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=0,
)
print(X_train.head())
现在,我们继续并打印数据集的列名:
X_train.columns
Index(['pclass', 'name', 'sex', 'age', 'sibsp', 'parch', 'ticket', 'fare',
'cabin', 'embarked', 'boat', 'body', 'home.dest'],
dtype='object')
现在,使用 DropFeatures()
我们可以非常容易地删除一组变量。下面我们设置转换器来删除一个包含6个变量的列表:
# set up the transformer
transformer = DropFeatures(
features_to_drop=['sibsp', 'parch', 'ticket', 'fare', 'body', 'home.dest']
)
# fit the transformer
transformer.fit(X_train)
使用 fit()
这个转换器不会学习任何参数。我们可以继续并如下移除变量:
train_t = transformer.transform(X_train)
test_t = transformer.transform(X_test)
现在,如果我们打印转换后的数据集的变量名称,我们可以看到它已经被减少了:
train_t.columns
Index(['pclass', 'name', 'sex', 'age', 'cabin', 'embarked', 'boat'], dtype='object')
其他资源#
在这个 Kaggle 内核中,我们展示了使用 DropFeatures()
的 3 种不同的端到端机器学习管道。
所有笔记本都可以在 专用仓库 中找到。
有关此功能选择方法及其他方法的更多详细信息,请查看以下资源:
或者阅读我们的书:
我们的书籍和课程都适合初学者和更高级的数据科学家。通过购买它们,您正在支持 Feature-engine 的主要开发者 Sole。