Мы видели такие методы, как fit (), transform () и fit_transform () во многих библиотеках SciKit. И почти во всех руководствах, включая написанные мной, вам предлагается использовать только один из этих методов. Возникает очевидный вопрос: что означают эти методы? Что вы имеете в виду под чем-то приспособить и что-то преобразовать? В методе transform () есть смысл, он просто преобразует данные, но как насчет fit ()? В этом посте мы попытаемся понять разницу между ними.

Чтобы лучше понять значение этих методов, мы возьмем класс Imputer в качестве примера, потому что класс Imputer имеет эти методы. Но прежде чем мы начнем, имейте в виду, что установка чего-то вроде импутера отличается от установки всей модели.

Вы используете Imputer для обработки недостающих данных в вашем наборе данных. Imputer предоставляет простые методы для замены NaN и пробелов чем-то вроде среднего значения столбца или даже медианы. Но прежде чем он сможет заменить эти значения, он должен вычислить значение, которое будет использоваться для замены пробелов. Если вы сообщаете Imputer, что хотите, чтобы среднее значение всех значений в столбце использовалось для замены всех NaN в этом столбце, Imputer должен сначала вычислить среднее значение. Этот шаг вычисления этого значения называется методом fit ().

Затем метод transform () просто заменит NaN в столбце вновь вычисленным значением и вернет новый набор данных. Это довольно просто. Метод fit_transform () будет делать обе эти вещи внутри себя и упрощает нам задачу, просто предоставляя один единственный метод. Но есть случаи, когда вы хотите вызвать только метод fit () и только метод transform ().

При обучении модели вы будете использовать набор обучающих данных. В этом наборе данных вы воспользуетесь Imputer, вычислите значение и замените пробелы. Но когда вы помещаете эту обученную модель в тестовый набор данных, вы больше не рассчитываете среднее или медиану. Вы будете использовать то же значение, что и в наборе тренировочных данных. Для этого вы воспользуетесь методом fit () в своем наборе обучающих данных, чтобы только вычислить значение и сохранить его внутри Imputer. Затем вы вызовете метод transform () для тестового набора данных с тем же объектом Inputer. Таким образом, значение, вычисленное для обучающего набора, которое было сохранено внутри объекта, также будет использоваться в тестовом наборе данных.

Проще говоря, вы можете использовать метод fit_transform () в обучающем наборе, так как вам нужно будет как подогнать, так и преобразовать данные, и вы можете использовать метод fit () в обучающем наборе данных, чтобы получить значение, и позже преобразовать () тестовые данные с ним. Дайте мне знать, если у вас есть какие-либо комментарии или вы не можете их понять.

Следуйте за мной в Twitter, чтобы узнать больше о Data Science, Machine Learning и общих технических новинках. Также вы можете следить за моим личным блогом.