Так, вам потрібно застосувати нормалізацію до тестових даних, якщо ваш алгоритм працює з нормалізованими навчальними даними або потребує нормалізованих даних *.
Це тому, що ваша модель працює на представленні, заданому її вхідними векторами. Шкала цих чисел є частиною подання. Це трохи схоже на перетворення між стопами та метрами. . . модель або формула нормально працюватиме лише з одним типом одиниці.
Вам не тільки потрібна нормалізація, але ви повинні застосувати таке саме масштабування, як і для своїх даних про навчання. Це означає, що ви можете зберігати масштаби та компенсації, що використовуються у ваших даних про навчання, та використовувати їх знову. Поширена помилка початківців полягає в тому, щоб окремо нормалізувати дані поїздів і тестів.
У Python та SKLearn ви можете нормалізувати свої вхідні / X значення, використовуючи стандартний масштабувач :
scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )
Зауважте, як train_X
потім нормалізується перетворення використання функції, яка підходить (з'ясовує парами). У той час як test_X
конверсія просто перетворюється, використовуючи ті самі парами, які вона дізналася з даних поїздів.
Нормалізація tf-idf, яку ви застосовуєте, повинна працювати аналогічно, оскільки вона вивчає деякі параметри з набору даних у цілому (частота слів у всіх документах), а також з використанням співвідношень, знайдених у кожному документі.
* Деякі алгоритми (наприклад, такі, що базуються на деревах рішень) не потребують нормалізованих входів і можуть справлятися з функціями, що мають різні властиві масштаби.