我如何 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)
我正在研究 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)