Sí, debe aplicar la normalización a los datos de prueba, si su algoritmo funciona o necesita datos de entrenamiento normalizados *.
Esto se debe a que su modelo funciona en la representación dada por sus vectores de entrada. La escala de esos números es parte de la representación. Esto es un poco como convertir entre pies y metros. . . un modelo o fórmula funcionaría con un solo tipo de unidad normalmente.
No solo necesita normalización, sino que debe aplicar exactamente la misma escala que para sus datos de entrenamiento. Eso significa almacenar la escala y el desplazamiento utilizados con sus datos de entrenamiento, y usarlos nuevamente. Un error común para principiantes es normalizar por separado su tren y los datos de prueba.
En Python y SKLearn, puede normalizar sus valores de entrada / X utilizando el Escalador estándar de esta manera:
scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )
Observe cómo la conversión del train_X
uso de una función que se ajusta (descifra los parámetros) luego se normaliza. Mientras que la test_X
conversión simplemente se transforma, usando los mismos parámetros que aprendió de los datos del tren.
La normalización tf-idf que está aplicando debería funcionar de manera similar, ya que aprende algunos parámetros del conjunto de datos en su conjunto (frecuencia de palabras en todos los documentos), así como también usa las proporciones encontradas en cada documento.
* Algunos algoritmos (como los basados en árboles de decisión) no necesitan entradas normalizadas y pueden hacer frente a características que tienen diferentes escalas inherentes.