python - 在测试集(保留集)的特征选择期间丢弃特征后特征形状不匹配
问题描述
我已将我的数据(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 个功能?由于测试集是我不应该修改的看不见的数据?
非常感谢任何建议,谢谢!
解决方案
你可以.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)
推荐阅读
- mysql - 每天按 date_format 分组
- reactjs - 如何使用 React JSX 隐藏引导模式
- python - BeagleBone Black AP 上的 Python 多播
- selenium - org.openqa.selenium.chrome.ChromeDriver 类型不可访问错误
- dictionary - kotlin -- 我可以重写这个地图访问来摆脱 ``!!`` 吗?
- java - 从函数调用对话框 [Android Studio]
- iis - 每个路由的不同身份验证架构(Windows、Bearer)
- c# - 如何在 Visual Studio 中启动并运行 SQLite?
- javascript - 用于标记单选输入的 jQuery 选择器
- asp.net-core - 我应该如何为 .NET Core 2.1 实施受支持的运行状况检查?