Sim, você precisa aplicar a normalização aos dados de teste, se o seu algoritmo funcionar com ou precisar de dados de treinamento normalizados *.
Isso ocorre porque seu modelo trabalha na representação dada por seus vetores de entrada. A escala desses números faz parte da representação. É um pouco como converter entre pés e metros. . . um modelo ou fórmula funcionaria normalmente com apenas um tipo de unidade.
Você não precisa apenas de normalização, mas deve aplicar exatamente o mesmo dimensionamento que os seus dados de treinamento. Isso significa armazenar a escala e o deslocamento usados com seus dados de treinamento e usá-los novamente. Um erro comum para iniciantes é normalizar separadamente seus dados de trem e teste.
No Python e no SKLearn, você pode normalizar seus valores de entrada / X usando o Standard Scaler como este:
scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )
Observe como a conversão do train_X
uso de uma função que se encaixa (calcula os parâmetros) normaliza. Enquanto a test_X
conversão se transforma, use os mesmos parâmetros que aprendeu com os dados do trem.
A normalização tf-idf que você está aplicando deve funcionar de maneira semelhante, pois aprende alguns parâmetros do conjunto de dados como um todo (frequência de palavras em todos os documentos), além de usar as proporções encontradas em cada documento.
* Alguns algoritmos (como aqueles baseados em árvores de decisão) não precisam de entradas normalizadas e podem lidar com recursos que possuem diferentes escalas inerentes.