Могу ли я стандартизировать все данные перед перекрестной проверкой?

avatar
Bose Sanamchai
8 апреля 2018 в 10:37
519
0
0

Я выполняю небольшой проект по машинному обучению.

Сомневаюсь, смогу ли я сначала стандартизировать все данные X (кроме метки Y). Я только видел, как разработчик стандартизировал набор поездов с fit_transform() и тестовый набор с transform() после разделения поезда на тестовый набор

.

пример кода:

import pandas as pd
dataset = pd.read_csv('../../dataset/dataset_experiment_1.csv')
X_no_stdize = dataset.iloc[:,:-1].values
y = dataset.iloc[:,86].values

from sklearn.preprocessing import StandardScaler
X = StandardScaler().fit_transform(X_no_stdize)

kfold = StratifiedKFold(n_splits=10, shuffle=True)

print('XGBoost')
model = XGBClassifier(booster='gbtree', objective='binary:logistic', learning_rate=0.2, max_depth=3)
f1_score = cross_val_score(model, X, y, cv=kfold, scoring=scoring3)
print('f1-score: ', f1_score.mean(), ' +- ', f1_score.std())

Заранее спасибо за помощь.

Источник
MaxU
8 апреля 2018 в 11:19
0

да, вы можете стандартизировать все свои данные X, если все ваши функции (столбцы) имеют числовые типы dtypes

Vivek Kumar
9 апреля 2018 в 09:36
0

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

jack
7 января 2020 в 06:45
1

Как объяснил @VivekKumar, стандартизировать все ваши данные — плохая идея, если вы планируете применять перекрестную проверку, потому что таким образом ваша модель, которую вы будете обучать на данных поезда, получит некоторую утечку информации о ваших тестовых данных. Вы должны стандартизировать данные поезда, а затем использовать перекрестную проверку. Теперь, когда вы решили, какую модель поместить в тестовый набор, вы должны преобразовать свой тестовый набор с преобразованиями, полученными при обучении данных, прежде чем применять свою модель в тестовом наборе.

Ответы (0)