Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Остаточний Оцінювач | Конвеєри
Вступ до ML з Scikit-learn

bookОстаточний Оцінювач

До цього моменту Pipeline використовувався переважно для попередньої обробки. Однак попередня обробка є лише проміжним етапом. Після трансформації дані зазвичай передаються предиктору (моделі) для отримання результатів або прогнозів.

Клас Pipeline підтримує це, дозволяючи використовувати естіматор—зазвичай предиктор—як фінальний крок. Ілюстрація нижче демонструє, як працює Pipeline, коли його останнім компонентом є предиктор.

Note
Примітка

Коли викликається метод .fit() для pipeline, кожен трансформер виконує .fit_transform(). На відміну від цього, при виклику .predict() pipeline застосовує .transform() до даних перед передачею їх предиктору.

Метод .predict() використовується переважно для нових екземплярів, які повинні пройти ті ж самі трансформації, що й тренувальні дані під час .fit().

Чому .transform()?

Pipeline застосовує .transform() замість .fit_transform() при обробці нових екземплярів даних для прогнозування. Це гарантує послідовність трансформацій між тренувальним і тестовим наборами.

Наприклад, розглянемо набір даних із категоріальною ознакою 'Color', яку необхідно закодувати перед навчанням моделі:

Ось як виглядають навчальні дані після one-hot кодування:

Ось нові екземпляри для прогнозування:

Якщо застосувати .fit_transform() до нових екземплярів, OneHotEncoder може створити стовпці в іншому порядку або навіть додати нові. Це призведе до того, що нові дані будуть трансформовані непослідовно з навчальним набором, що зробить прогнози ненадійними.

Однак використання .transform() гарантує, що нові дані будуть закодовані точно так само, як і тренувальні дані, ігноруючи категорії, які не були присутні під час навчання:

Додавання фінального оцінювача

Щоб використати фінальний оцінювач, достатньо додати його як останній крок у конвеєрі. Наприклад, у наступному розділі ми використаємо модель KNeighborsClassifier як фінальний оцінювач.

Синтаксис виглядає так:

# Creating a pipeline
pipe = make_pipeline(ct, 
                     SimpleImputer(strategy='most_frequent'),
					 StandardScaler(),
                     KNeighborsClassifier()
                    )
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 5

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 3.13

bookОстаточний Оцінювач

Свайпніть щоб показати меню

До цього моменту Pipeline використовувався переважно для попередньої обробки. Однак попередня обробка є лише проміжним етапом. Після трансформації дані зазвичай передаються предиктору (моделі) для отримання результатів або прогнозів.

Клас Pipeline підтримує це, дозволяючи використовувати естіматор—зазвичай предиктор—як фінальний крок. Ілюстрація нижче демонструє, як працює Pipeline, коли його останнім компонентом є предиктор.

Note
Примітка

Коли викликається метод .fit() для pipeline, кожен трансформер виконує .fit_transform(). На відміну від цього, при виклику .predict() pipeline застосовує .transform() до даних перед передачею їх предиктору.

Метод .predict() використовується переважно для нових екземплярів, які повинні пройти ті ж самі трансформації, що й тренувальні дані під час .fit().

Чому .transform()?

Pipeline застосовує .transform() замість .fit_transform() при обробці нових екземплярів даних для прогнозування. Це гарантує послідовність трансформацій між тренувальним і тестовим наборами.

Наприклад, розглянемо набір даних із категоріальною ознакою 'Color', яку необхідно закодувати перед навчанням моделі:

Ось як виглядають навчальні дані після one-hot кодування:

Ось нові екземпляри для прогнозування:

Якщо застосувати .fit_transform() до нових екземплярів, OneHotEncoder може створити стовпці в іншому порядку або навіть додати нові. Це призведе до того, що нові дані будуть трансформовані непослідовно з навчальним набором, що зробить прогнози ненадійними.

Однак використання .transform() гарантує, що нові дані будуть закодовані точно так само, як і тренувальні дані, ігноруючи категорії, які не були присутні під час навчання:

Додавання фінального оцінювача

Щоб використати фінальний оцінювач, достатньо додати його як останній крок у конвеєрі. Наприклад, у наступному розділі ми використаємо модель KNeighborsClassifier як фінальний оцінювач.

Синтаксис виглядає так:

# Creating a pipeline
pipe = make_pipeline(ct, 
                     SimpleImputer(strategy='most_frequent'),
					 StandardScaler(),
                     KNeighborsClassifier()
                    )
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 5
some-alt