Фінальний Оцінювач
Свайпніть щоб показати меню
Pipeline раніше використовувався для попередньої обробки, але його справжнє призначення — поєднання попередньої обробки з фінальним предиктором. Останній крок у pipeline може бути будь-яким оцінювачем (зазвичай моделлю), який генерує передбачення.
Під час виклику .fit() кожен трансформер виконує .fit_transform().
Під час виклику .predict() pipeline використовує .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)
Це дозволяє виконати весь робочий процес—попередню обробку + прогнозування—одним викликом.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат