Да, вам необходимо применить нормализацию к тестовым данным, если ваш алгоритм работает с нормализованными данными обучения или нуждается в них *.
Это потому, что ваша модель работает с представлением, данным ее входными векторами. Шкала этих чисел является частью представления. Это немного похоже на пересчет между футами и метрами. , , модель или формула будет нормально работать только с одним типом единиц.
Вам требуется не только нормализация, но вы должны применять точно такое же масштабирование, что и для ваших тренировочных данных. Это означает сохранение масштаба и смещения, используемых с вашими тренировочными данными, и повторное использование. Распространенная ошибка новичка состоит в том, чтобы отдельно нормализовать данные вашего поезда и теста.
В Python и SKLearn вы можете нормализовать ваши значения input / X, используя Standard Scaler, например:
scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )
Обратите внимание на то, как преобразование train_X
использования функции, которая подходит (вычисляет параметры), затем нормализуется. Хотя test_X
преобразование просто трансформируется, используя те же параметры, которые были получены из данных поезда.
Применяемая нормализация tf-idf должна работать аналогично, так как она учитывает некоторые параметры из набора данных в целом (частота слов во всех документах), а также использует соотношения, найденные в каждом документе.
* Некоторые алгоритмы (например, основанные на деревьях решений) не нуждаются в нормализованных входных данных и могут справляться с функциями, имеющими различные внутренние масштабы.