Tak, musisz zastosować normalizację do danych testowych, jeśli twój algorytm działa lub potrzebuje znormalizowanych danych treningowych *.
Jest tak, ponieważ model działa na reprezentacji podanej przez wektory wejściowe. Skala tych liczb jest częścią przedstawienia. To trochę przypomina konwersję stóp i metrów. . . model lub formuła normalnie działałyby tylko z jednym typem jednostki.
Nie tylko potrzebujesz normalizacji, ale powinieneś zastosować dokładnie takie samo skalowanie jak dla danych treningowych. Oznacza to przechowywanie skali i przesunięcia używanych z danymi treningowymi i ponowne ich użycie. Częstym błędem początkującego jest osobna normalizacja pociągu i testowanie danych.
W Python i SKLearn możesz znormalizować wartości wejściowe / X za pomocą Standardowego skalera w następujący sposób:
scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )
Zwróć uwagę, jak konwersja train_X
za pomocą funkcji, która pasuje (oblicza parametry), a następnie normalizuje się. Podczas gdy test_X
konwersja po prostu przekształca się, wykorzystując te same parametry, których nauczył się z danych pociągu.
Stosowana normalizacja tf-idf powinna działać podobnie, ponieważ uczy się niektórych parametrów z zestawu danych jako całości (częstotliwość słów we wszystkich dokumentach), a także z wykorzystaniem współczynników znalezionych w każdym dokumencie.
* Niektóre algorytmy (takie jak te oparte na drzewach decyzyjnych) nie wymagają znormalizowanych danych wejściowych i mogą poradzić sobie z funkcjami, które mają różne nieodłączne skale.