Следующее объяснение основывается на 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
данных испытаний затем заменяет пропущенные значения данных испытаний средними значениями, которые были рассчитаны на основе данных обучения.