我如何 select 我在训练数据中 select 编辑的测试数据中的相同特征?

How do I select the same features in my test data that I selected in my train data?

我正在研究 kaggle 上的房价竞赛。我有一个数据准备函数,它使用递归特征消除 (RFE) 来处理 selection 的特征,如下所示:

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 变量。

我的问题是,如何才能 select 使用训练数据集时的相同特征?

我在使用TruncatedSVD进行降维时遇到了同样的问题:

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

我有集合 X(训练)和集合 datasetTest(测试),我希望select编辑相同的特征。

如果我没理解错的话,你的问题是你不能在测试集上做 fit_transform 因为你没有 y 变量。

您可以访问 rfe.support_ 选择了哪些 returns 功能。

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 阅读更多内容。

RFE 有一个 transform 方法,所以你可以这样做(在选择器适合你的训练数据之后):

X_test_selected = rfe.transform(X_test)