Получение того же результата, что и Sklearn Pipeline, без его использования - PullRequest
0 голосов
/ 11 января 2019

Как правильно стандартизировать данные без использования конвейера? Я просто хочу убедиться, что мой код правильный и нет утечки данных.

Так что, если я стандартизирую весь набор данных один раз, в самом начале своего проекта, а затем продолжу пробовать различные CV-тесты с разными алгоритмами ML, это будет то же самое, что создание конвейера Sklearn и выполнение той же стандартизации в соединение с каждым алгоритмом ML?

y = df['y']
X = df.drop(columns=['y', 'Date'])

scaler = preprocessing.StandardScaler().fit(X)
X_transformed = scaler.transform(X)

clf1 = DecisionTreeClassifier()
clf1.fit(X_transformed, y)

clf2 = SVC()
clf2.fit(X_transformed, y)

####Is this the same as the below code?####

pipeline1 = []
pipeline1.append(('standardize', StandardScaler()))
pipeline1.append(('clf1', DecisionTreeClassifier()))
pipeline1.fit(X_transformed,y)

pipeline2 = []
pipeline2.append(('standardize', StandardScaler()))
pipeline2.append(('clf2', DecisionTreeClassifier()))
pipeline2.fit(X_transformed,y)

Почему кто-то выбирает последнее, кроме личных предпочтений?

1 Ответ

0 голосов
/ 11 января 2019

Они одинаковы. Вполне возможно, что вам может понадобиться одно или другое с точки зрения удобства обслуживания, но результат прогноза набора тестов будет идентичным.

Редактировать Обратите внимание, что это только так, потому что StandardScaler является идемпотентом. Странно, что вы подгоняете конвейер к уже масштабированным данным ...

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