【发布时间】:2019-08-22 22:29:14
【问题描述】:
我正在学习如何准备数据、构建估算器并使用训练/测试数据拆分进行检查。
我的问题是如何正确准备测试数据集。
我将数据分成测试集和训练集。正如"Hands on with machine learning with Scikit-Learn" 教我的那样,我为我的数据准备建立了一个管道:
num_pipeline = Pipeline([
('imputer', SimpleImputer(strategy="median")),
('std_scaler', StandardScaler()),
])
在训练我的估计器后,我想在测试数据上使用训练有素的估计器来验证我的准确性。但是,如果我通过我定义的管道传递我的测试特征数据,它不是仅从测试数据集和基于测试数据集的 std_scalar 计算新的中值,这将与训练数据集中的值不同?
为了保持一致性,我想重复使用在训练期间获得的变量。这就是估计器已安装的内容。例如,如果测试集只是单行(或者在生产中我有一个我想从中推导出预测的输入),那么如果单个输入有一个 NaN,那么中值甚至都无法实现!
我错过了什么步骤?
【问题讨论】:
-
上面的管道将在训练集上拟合缩放参数,并使用这些参数来转换训练集和测试集,这是正确的做法。
标签: scikit-learn imputation train-test-split