Наступне пояснення грунтується на 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
в основному це fit
a transform
.
Тепер ваші запитання:
Чому нам може знадобитися перетворення даних?
"З різних причин багато наборів даних у реальному світі містять відсутні значення, які часто кодуються як пробіли, NaNs або інші заповнювачі. Однак такі набори даних несумісні з оцінниками, які вивчають scikit, які припускають, що всі значення масиву є числовими" ( джерело )
Що означає відповідність моделі навчальних даних та перетворення на тестові дані?
fit
З imputer не має нічого спільного з fit
використовуваним в моделі фитинга. Таким чином, використовуючи дані комп’ютера fit
на даних про навчання, просто обчислюються засоби кожної колонки даних про навчання. Використання transform
даних тестів потім замінює пропущені значення тестових даних засобами, які були обчислені з навчальних даних.