首页 > 解决方案 > 在测试集(保留集)的特征选择期间丢弃特征后特征形状不匹配

问题描述

我已将我的数据(train.tsv)分成两组(训练和验证集),即 X_train、y_train、X_validation、y_validation。

选择特征后,我放弃了 6 个特征。删除功能后:

X_train.shape, y_train.shape, X_validation.shape, y_validation.shape, X_test.shape

返回:

((59372, 40), (59372,), (14844, 40), (14844,), (10618, 46))

在 X_train 和 y_train 上拟合我的模型后,我已经在 X_validation 上预测了我的模型。

但我也想在一个单独的保持集(test.tsv)上预测我的模型,使用

y_pred_on_testset = model.predict(X_test)

这个保留集本质上是看不见的数据,我没有在上面训练我的模型。然而,这个保留集有 46 个特征(如上图 X_test.shape 所示)。

如果我也放弃了这个 test.tsv(测试集)上的 6 个功能,这是否有意义?我确定我可以在删除 6 个功能后在此测试集上预测我的模型,否则它将返回错误:

ValueError:特征形状不匹配,预期:40,得到 46

因为我在 40 个特征上训练了我的模型,而不是 46 个

我不确定是否应该继续删除这 6 个功能?由于测试集是我不应该修改的看不见的数据?

非常感谢任何建议,谢谢!

标签: python

解决方案


你可以.T像下面这样使用。你需要Transpose matrix. 当您在使用第一个矩阵之前读取test set和存储时,如下所示。numpy arrayTranspose

>>> test = np.array([[1,2,2],[3,2,4]])
>>> test.shape
(2,3)
>>> test.T.shape
(3,2)

推荐阅读