Sì, è necessario applicare la normalizzazione ai dati di test, se l'algoritmo funziona o necessita di dati di allenamento normalizzati *.
Questo perché il tuo modello funziona sulla rappresentazione fornita dai suoi vettori di input. La scala di quei numeri fa parte della rappresentazione. È un po 'come convertire tra piedi e metri. . . un modello o una formula funzionerebbe normalmente con un solo tipo di unità.
Non solo hai bisogno di normalizzazione, ma dovresti applicare lo stesso ridimensionamento esatto per i tuoi dati di allenamento. Ciò significa memorizzare la scala e l'offset utilizzati con i dati di allenamento e riutilizzarli. Un errore comune per i principianti è di normalizzare separatamente i dati del treno e dei test.
In Python e SKLearn, potresti normalizzare i valori di input / X usando lo scaler standard in questo modo:
scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )
Nota come la conversione train_X
dell'uso di una funzione adatta (calcola i parametri) si normalizza. Mentre la test_X
conversione si trasforma, usando gli stessi parametri che ha appreso dai dati del treno.
La normalizzazione tf-idf che stai applicando dovrebbe funzionare in modo simile, in quanto apprende alcuni parametri dal set di dati nel suo insieme (frequenza delle parole in tutti i documenti), nonché utilizzando i rapporti trovati in ciascun documento.
* Alcuni algoritmi (come quelli basati su alberi decisionali) non necessitano di input normalizzati e possono far fronte a funzionalità con scale intrinseche diverse.