如何解决与K-fold交叉验证结合使用标准化/规范化的正确方法是什么?
我一直了解到,标准化或规范化仅应适合训练集,然后才能用于转换测试集。所以我要做的是:
scaler = StandardScaler()
scaler.fit_transform(X_train)
scaler.transform(X_test)
现在,如果我要在新数据上使用此模型,我可以保存“缩放器”并将其加载到任何新脚本中。
我在理解K折简历的工作方式时遇到了麻烦。每次折叠都重新安装和改造洁牙机是最佳实践吗?我可以理解这是如何建立模型的,但是如果以后我想使用该模型,该怎么办。我应该保存哪个洁牙机?
我还想将其扩展到时间序列数据。我了解k倍在时间序列中的工作原理,但又如何将其与CV相结合?在这种情况下,我建议保存最后一个定标器,因为它适合于数据的4/5(在k = 5的情况下),并适合大多数(最新)数据。那是正确的方法吗?
解决方法
在每次折叠时重新安装和改造洁牙机是最佳实践吗?
是的。您可能需要阅读scikit-learn的doc on cross-validation:
测试预测变量对从 培训,预处理(例如标准化,功能选择, 等),类似的数据转换也应从 训练集并应用于保留的数据以进行预测。
我应该保存哪个洁牙机?
保存定标器(以及任何其他预处理,即pipeline),并在所有训练数据上训练预测变量,而不仅仅是从(k-1)/ k交叉验证或一次拆分获得70%的验证。
-
如果您要建立回归模型,就这么简单。
-
如果模型训练需要使用以下参数进行超参数搜索 交叉验证(例如,通过网格搜索xgboost学习参数), 那么您已经从各个方面收集了信息,因此您 需要另一个测试集来估计真实的样本外模型 性能。 (一旦进行了估算,就可以重新培训 再次结合训练和测试数据。对于神经网络,并非总是要完成最后一步 针对特定样本量参数化的网络。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。