【问题标题】:Feature shape mismatch after dropping features during feature selection on test set (holdout set)在测试集(保留集)的特征选择期间丢弃特征后特征形状不匹配
【发布时间】:2021-09-29 11:14:15
【问题描述】:

我已将我的数据 (train.tsv) 分成 2 组(训练和验证集),即 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


    【解决方案1】:

    您可以使用.T,如下所示。你需要Transpose matrix。当您阅读test set 并存储在numpy array 中,然后使用第一个Transpose 矩阵,如下所示。

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

    【讨论】:

    • 您好,感谢您的及时回复!我实际上不确定我是否被“允许”从测试集中删除功能,因为测试集是一个保留集(一个单独给我的 test.tsv 文件),所以我在想是否可以“修改”它,即从中删除功能?
    • @Sherlyn 是的,您可以删除功能,但您需要确定哪些功能用于学习并且不要删除它们,例如,如果功能 [1,3,5] 在学习中使用,您可以删除功能[2,4] 并且不删除最后两个特征
    • @Sherlyn 这对你有帮助吗
    • 是的,谢谢!我已经从我的测试集和验证集中删除了这些功能:)
    • @Sherlyn 如果这对您有帮助,请阅读此链接:meta.stackexchange.com/questions/5234/…
    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 2016-03-16
    • 1970-01-01
    • 2021-08-01
    • 2017-08-14
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多