Следующее объяснение основывается на 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.
Теперь ваши вопросы:
Почему нам может понадобиться преобразовать данные?
«По различным причинам во многих реальных наборах данных содержатся пропущенные значения, часто кодируемые как пробелы, NaN или другие заполнители. Такие наборы данных, однако, несовместимы с оценками scikit-learn, которые предполагают, что все значения в массиве являются числовыми» ( источник )
Что означает подгонка модели к тренировочным данным и преобразование в тестовые данные?
fitИз imputer не имеет ничего общего с fitиспользуемым в модели фитинга. Таким образом, используя imputer's fitдля тренировочных данных просто вычисляет средние значения для каждого столбца обучающих данных. Использование transformданных испытаний затем заменяет пропущенные значения данных испытаний средними значениями, которые были рассчитаны на основе данных обучения.