Наступне пояснення грунтується на fit_transformз Imputerкласу, але ідея та ж для fit_transformінших класів scikit_learn подобається MinMaxScaler.
transformзамінює пропущені значення цифрою. За замовчуванням це число є засобом стовпців деяких даних, які ви вибираєте. Розглянемо наступний приклад:
imp = Imputer()
# calculating the means
imp.fit([[1, 3], [np.nan, 2], [8, 5.5]])
Тепер комп'ютер навчився використовувати середнє (1 + 8) / 2 = 4,5 для першого стовпця і середнє (2 + 3 + 5,5) / 3 = 3,5 для другого стовпця, коли воно застосовується до даних двох стовпців:
X = [[np.nan, 11],
[4, np.nan],
[8, 2],
[np.nan, 1]]
print(imp.transform(X))
ми отримуємо
[[4.5, 11],
[4, 3.5],
[8, 2],
[4.5, 1]]
Тож за fitдопомогою комп’ютера обчислює засоби стовпців з деяких даних, і transformвін застосовує ці засоби до деяких даних (що просто замінює пропущені значення засобами). Якщо обидва ці дані однакові (тобто дані для обчислення засобів та дані, до яких застосовуються засоби), ви можете використовувати, fit_transformв основному це fita transform.
Тепер ваші запитання:
Чому нам може знадобитися перетворення даних?
"З різних причин багато наборів даних у реальному світі містять відсутні значення, які часто кодуються як пробіли, NaNs або інші заповнювачі. Однак такі набори даних несумісні з оцінниками, які вивчають scikit, які припускають, що всі значення масиву є числовими" ( джерело )
Що означає відповідність моделі навчальних даних та перетворення на тестові дані?
fitЗ imputer не має нічого спільного з fitвикористовуваним в моделі фитинга. Таким чином, використовуючи дані комп’ютера fitна даних про навчання, просто обчислюються засоби кожної колонки даних про навчання. Використання transformданих тестів потім замінює пропущені значення тестових даних засобами, які були обчислені з навчальних даних.