Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Фінальний Оцінювач | Конвеєри
Вступ до машинного навчання з Python

bookФінальний Оцінювач

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

Note
Примітка

Під час виклику .fit() кожен трансформер виконує .fit_transform(). Під час виклику .predict() конвеєр використовує .transform() перед передачею даних фінальному оцінювачу. Це необхідно, оскільки нові дані мають бути трансформовані так само, як і тренувальні дані.

Чому .transform()?

Використання .fit_transform() для нових даних може змінити кодування (наприклад, у OneHotEncoder), що призведе до невідповідності стовпців і ненадійних передбачень. .transform() гарантує послідовну попередню обробку, ігноруючи невідомі категорії та зберігаючи той самий порядок стовпців.

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

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

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

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

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

Достатньо додати модель як останній крок у конвеєрі:

pipe = make_pipeline(
    ct,
    SimpleImputer(strategy='most_frequent'),
    StandardScaler(),
    KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)

Це дозволяє виконати весь робочий процес—попередню обробку та прогнозування—одним викликом.

Все було зрозуміло?

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain why using `.fit_transform()` on new data is problematic?

How does `.transform()` handle unseen categories in new data?

Can you show an example of a pipeline with a different final estimator?

bookФінальний Оцінювач

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

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

Note
Примітка

Під час виклику .fit() кожен трансформер виконує .fit_transform(). Під час виклику .predict() конвеєр використовує .transform() перед передачею даних фінальному оцінювачу. Це необхідно, оскільки нові дані мають бути трансформовані так само, як і тренувальні дані.

Чому .transform()?

Використання .fit_transform() для нових даних може змінити кодування (наприклад, у OneHotEncoder), що призведе до невідповідності стовпців і ненадійних передбачень. .transform() гарантує послідовну попередню обробку, ігноруючи невідомі категорії та зберігаючи той самий порядок стовпців.

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

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

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

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

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

Достатньо додати модель як останній крок у конвеєрі:

pipe = make_pipeline(
    ct,
    SimpleImputer(strategy='most_frequent'),
    StandardScaler(),
    KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)

Це дозволяє виконати весь робочий процес—попередню обробку та прогнозування—одним викликом.

Все було зрозуміло?

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

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

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