如何在测试数据中选择与在列车数据中选择的相同的特征?

2024-04-23 11:13:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理kaggle的房价竞争。我有一个数据准备函数,它使用递归特征消除(RFE)进行特征选择,如下所示:

rfe = RFE(estimator=ElasticNet(), n_features_to_select=10)
X_selected = rfe.fit_transform(X, y)
X = pd.DataFrame(X_selected)

其中X, y = dataset.iloc[:,:-1], dataset.iloc[:,-1:]当我使用训练数据集时,它可以正常工作,但当我使用测试数据集时,它不能正常工作,因为它没有y变量

我的问题是,如何选择与使用培训数据集时相同的功能

我在使用TruncatedSVD进行降维时也有同样的问题:

svd = TruncatedSVD(n_components=30)
X_trans = svd.fit_transform(X)
X = pd.DataFrame(X_trans)

其中,我有一个集合X(train)和一个集合datasetest(test),我希望选择相同的特性


2条回答

^{}有一个transform方法,因此您可以执行类似的操作(在将选择器装配到培训数据之后):

X_test_selected = rfe.transform(X_test)

如果我理解正确,您的问题是您无法对测试集执行fit_transform,因为您没有y变量

您可以访问rfe.support,它返回所选的功能

rfe = RFE(estimator=ElasticNet(), n_features_to_select=10)
X_selected = rfe.fit_transform(X, y)
X = pd.DataFrame(X_selected)

X_test_selected = X_test[:, rfe.support_]  # Picking the selected features

rfe.support包含一个[True False... True]掩码,其中True表示已选择该功能

你可以在scikit documentation中阅读更多内容

相关问题 更多 >