Sklearn / scikit учиться, используя метод подгонки - PullRequest
0 голосов
/ 02 июля 2019

как метод fit () работает в sklearn.pressing с использованием класса Imputer, что именно fit () делает в фоновом режиме, как это необходимо для приведенного ниже кода, и везде я вижу, что подходит для чего,почему и как?

from sklearn.preprocessing import Imputer
impt = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
impt = impt.fit(X[:,1:3])
X[:,1:3] = impt.transform(X[:,1:3])

Ответы [ 3 ]

1 голос
/ 02 июля 2019

Идея состоит в том, чтобы "подогнать" вашу предварительную обработку только для ваших тренировочных данных (как и для вашей модели).Он изучит какое-то состояние, для импутера это может быть среднее вашей функции.Затем, когда вы преобразуете данные теста / проверки, вы используете состояние (то есть, в данном случае означает ) для вменения новых невидимых данных.Используя этот дизайн, это действительно позволяет избежать утечек данных.Подумайте, не вменяли ли вы весь свой набор данных.Среднее значение, которое вы используете для вменения, теперь использует некоторую информацию из ваших предположительно непроверенных тестовых данных.Это утечка данных, ваши данные больше не являются действительно невидимыми.Scikit-learn использует шаблон fit / transform, чтобы легко устранить эту распространенную ошибку в машинном обучении.

Кроме того, поскольку ВСЕ преобразователи и оценщики sklearn используют этот API fit, вы можете объединить их в цепочкуконвейер, позволяющий легко выполнять всю вашу предварительную обработку при каждом сгибании k-кратной перекрестной проверки, что в противном случае было бы очень сложным и сложным делом без ошибок.

1 голос
/ 02 июля 2019

Imputer(missing_values = "NaN", strategy = "mean", axis = 0)

Приведенная выше строка создает объект Imputer, который будет вменять / заменять отсутствующие значения, которые обозначены как NaN, средним значением значений.

impt = impt.fit(X[:,1:3])

Так что ему нужны некоторые данные, из которых он может рассчитать mean, которые могут быть заменены отсутствующими значениями. Обычно это делается методом fit, который вычисляет необходимые значения, средние в этом случае. fit принимает некоторые данные для вычисления этих значений и обычно называется фазой training.

impt.transform(X[:,1:3])

После того, как значения рассчитаны, они могут использоваться для новых данных, представленных ему. В этом случае он заменит отсутствующие данные рассчитанным (по методу fit) средним значением. Это делается методом transform.

Иногда может потребоваться запустить fit и transform из одних и тех же данных. В таких случаях вместо вызова fit с последующим преобразованием мы можем использовать метод fit_transform.

X[:,1:3] = impt.fit_transform(X[:,1:3])

0 голосов
/ 02 июля 2019

Что ж, цель «подгонки» на этапе предварительной обработки состоит в том, чтобы вычислить необходимые значения (например, min и max для каждой переменной).Затем с этим значением scikit learn может предварительно обработать ваши данные, но раньше этого не произошло.Это также полезно, потому что вы можете позже использовать ваш объект препроцессора позже.

Вы также можете использовать fit_transform, если хотите выполнить эти 2 шага за один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...