Oui, vous devez appliquer la normalisation aux données de test, si votre algorithme fonctionne avec ou a besoin de données d'entraînement normalisées *.
En effet, votre modèle fonctionne sur la représentation donnée par ses vecteurs d'entrée. L'échelle de ces chiffres fait partie de la représentation. C'est un peu comme convertir des pieds en mètres. . . un modèle ou une formule fonctionnerait normalement avec un seul type d'unité.
Non seulement vous avez besoin d'une normalisation, mais vous devez appliquer la même mise à l'échelle exacte que pour vos données d'entraînement. Cela signifie stocker l'échelle et le décalage utilisés avec vos données d'entraînement et les réutiliser. Une erreur courante pour les débutants est de normaliser séparément vos données de train et de test.
En Python et SKLearn, vous pouvez normaliser vos valeurs d'entrée / X en utilisant le Scaler standard comme ceci:
scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )
Notez comment la conversion de l' train_X
utilisation d'une fonction qui correspond (chiffre les paramètres) se normalise ensuite. Alors que la test_X
conversion se transforme, en utilisant les mêmes paramètres que ceux tirés des données du train.
La normalisation tf-idf que vous appliquez devrait fonctionner de la même manière, car elle apprend certains paramètres de l'ensemble de données (fréquence des mots dans tous les documents), ainsi que l'utilisation des ratios trouvés dans chaque document.
* Certains algorithmes (tels que ceux basés sur des arbres de décision) n'ont pas besoin d'entrées normalisées et peuvent gérer des fonctionnalités qui ont différentes échelles inhérentes.