Answers:
是的,如果您的算法适用于或需要标准化的训练数据*,则需要对测试数据应用标准化。
那是因为您的模型可以使用其输入向量所给出的表示。这些数字的标度是表示的一部分。这有点像在英尺和米之间转换。。。模型或公式通常只适用于一种类型的单位。
您不仅需要归一化,还应该应用与训练数据完全相同的缩放比例。这意味着存储与训练数据一起使用的比例和偏移,然后再次使用。初学者常见的错误是单独规范化训练和测试数据。
在Python和SKLearn中,您可以使用Standard Scaler来标准化输入/ X值,如下所示:
scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )
请注意,如何train_X
使用适合的函数进行转换(确定参数)然后进行规范化。test_X
转换只是使用从火车数据中学到的参数进行转换。
您正在应用的tf-idf归一化应该以类似的方式工作,因为它会从整个数据集中学习一些参数(所有文档中单词的频率),并使用每个文档中的比率。
*某些算法(例如基于决策树的算法)不需要标准化的输入,并且可以处理具有不同固有比例的特征。