Комментарии 6
Хорошая статья для первого знакомства с темой. Но оценивать статистики для масштабирования признаков (вызывать fit или fit_transform у Sclaler-а) следует после сплита и только на обучающих данных, а на тестовых только применять преобразование (вызывать transform) с оцененными параметрами:
X_train, X_test,\
y_train, y_test = train_test_split(X, y,
test_size=0.2)
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
le = LabelEncoder()
y_train = le.fit_transform(y_train)
y_test = le.transform(y_test)
Да, LabelEncoder для целевой переменной можно вызывать и до разделения, так как он не оценивает никакие статистики по данным, поставил его вызов после сплита исключительно для единообразия обращения со всем, у чего есть интерфейс (fit, transform).
Спасибо, что обратили внимание. хоть и не в первый раз такое читаю и вроде знаю про это, но сам пока не могу обратить внимание на такую деталь)))
Почему после сплита? Можно и до, разницы ни какой вроде бы нету
Разница тут скорее принципиальная. Мы имеем в руках учебный датасет "целиком", но пытаемся смоделировать реальную ситуацию, когда мы имеем какие-то данные, на основе которых нам надо построить систему принятия решений, которая затем должна хорошо работать на новых, ранее не виданных данных. Я говорю "система", а не "модель", потому что модель обычно является частью более крупного пайплайна, включающего в себя также как минимум пред- и постобработку данных.
Даже в данном примере наша итоговая система обработки данных состоит не только из модели, но также и из скейлера, который, как и модель, имеет настраиваемые параметры (если хотите, их можно даже назвать обучаемыми; неспроста скейлеры имеют интерфейс .fit
, как и модели). В случае StandardScaler настраиваемыми параметрами являются выборочные оценки матожидания и стандартного отклонения для каждого признака в датасете. Эти обучаемые параметры, как и параметры следующей за скейлером модели, должны подбираться ("обучаться") только на обучающих данных, чтобы не допустить утечки информации из тестовых данных. То есть по-хорошему, никакие настраиваемые параметры системы не должны подстраиваться на тестовых данных - только так мы сможем доверять итоговым оценкам качества решения на отложенной выборке и не компрометировать их.
Для начинающих норм
Машинное обучение для чайников