Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте KNeighborsClassifier | Моделювання
Вступ до ML з Scikit-learn

bookKNeighborsClassifier

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

Note
Примітка

Принципи роботи моделей не є основною темою цього курсу, тому не хвилюйтеся, якщо щось здається незрозумілим. Детальніше це пояснюється в інших курсах, таких як Linear Regression with Python або Classification with Python.

k-Найближчих сусідів

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

KNeighborsClassifier — це реалізація цього алгоритму у Scikit-learn для задач класифікації. Процес прогнозування відбувається наступним чином:

  1. Для нового прикладу визначають k найближчих навчальних прикладів за схожістю ознак. Вони називаються сусідами.
  2. Визначають найчастіший клас серед k сусідів. Цей клас стає прогнозом для нового прикладу.

Параметр k визначає кількість сусідів, яких слід враховувати. За замовчуванням він дорівнює 5. Різні значення k можуть призводити до різних прогнозів, тому це гіперпараметр — параметр, який обирається до навчання і безпосередньо впливає на поведінку моделі.

Експериментування з різними значеннями k та вибір найкращого для продуктивності моделі називається налаштуванням гіперпараметрів. Цей процес є важливим для оптимізації моделі.

KNeighborsClassifier під час .fit()

На відміну від більшості моделей машинного навчання, KNeighborsClassifier під час навчання лише зберігає навчальний набір. Проте, навіть якщо навчання не займає часу, виклик .fit(X, y) є обов'язковим, щоб модель запам'ятала навчальний набір.

KNeighborsClassifier під час .predict()

Під час прогнозування KNeighborsClassifier жадібно знаходить k найближчих сусідів для кожного нового екземпляра.

Note
Примітка

У наведених вище gif-анімаціях використовуються лише дві ознаки: 'body_mass_g' та 'culmen_depth_mm', оскільки візуалізувати багатовимірні графіки складно. Додавання додаткових ознак, ймовірно, допоможе моделі краще розділяти зелені та червоні точки даних, що дозволить KNeighborsClassifier робити точніші прогнози.

Приклад коду KNeighborsClassifier

Створення KNeighborsClassifier, навчання моделі та оцінка її точності за допомогою методу .score(). Набір даних у файлі .csv вже попередньо оброблений.

Кількість сусідів (k) задається аргументом n_neighbors під час ініціалізації KNeighborsClassifier. Спробуйте як значення за замовчуванням 5, так і 1.

12345678910111213
import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
copy

Результати демонструють високу точність, навіть ідеальну для 1-найближчого сусіда.

Однак ці оцінки не є надійними, оскільки оцінювання виконувалося на навчальній вибірці — тих самих даних, на яких модель навчалася. У такому випадку модель просто передбачає вже відомі їй приклади.

Для коректної оцінки якості модель необхідно перевіряти на даних, з якими вона раніше не стикалася.

question mark

Як KNeighborsClassifier робить передбачення для нового екземпляра?

Select the correct answer

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

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

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

Секція 4. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Awesome!

Completion rate improved to 3.13

bookKNeighborsClassifier

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

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

Note
Примітка

Принципи роботи моделей не є основною темою цього курсу, тому не хвилюйтеся, якщо щось здається незрозумілим. Детальніше це пояснюється в інших курсах, таких як Linear Regression with Python або Classification with Python.

k-Найближчих сусідів

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

KNeighborsClassifier — це реалізація цього алгоритму у Scikit-learn для задач класифікації. Процес прогнозування відбувається наступним чином:

  1. Для нового прикладу визначають k найближчих навчальних прикладів за схожістю ознак. Вони називаються сусідами.
  2. Визначають найчастіший клас серед k сусідів. Цей клас стає прогнозом для нового прикладу.

Параметр k визначає кількість сусідів, яких слід враховувати. За замовчуванням він дорівнює 5. Різні значення k можуть призводити до різних прогнозів, тому це гіперпараметр — параметр, який обирається до навчання і безпосередньо впливає на поведінку моделі.

Експериментування з різними значеннями k та вибір найкращого для продуктивності моделі називається налаштуванням гіперпараметрів. Цей процес є важливим для оптимізації моделі.

KNeighborsClassifier під час .fit()

На відміну від більшості моделей машинного навчання, KNeighborsClassifier під час навчання лише зберігає навчальний набір. Проте, навіть якщо навчання не займає часу, виклик .fit(X, y) є обов'язковим, щоб модель запам'ятала навчальний набір.

KNeighborsClassifier під час .predict()

Під час прогнозування KNeighborsClassifier жадібно знаходить k найближчих сусідів для кожного нового екземпляра.

Note
Примітка

У наведених вище gif-анімаціях використовуються лише дві ознаки: 'body_mass_g' та 'culmen_depth_mm', оскільки візуалізувати багатовимірні графіки складно. Додавання додаткових ознак, ймовірно, допоможе моделі краще розділяти зелені та червоні точки даних, що дозволить KNeighborsClassifier робити точніші прогнози.

Приклад коду KNeighborsClassifier

Створення KNeighborsClassifier, навчання моделі та оцінка її точності за допомогою методу .score(). Набір даних у файлі .csv вже попередньо оброблений.

Кількість сусідів (k) задається аргументом n_neighbors під час ініціалізації KNeighborsClassifier. Спробуйте як значення за замовчуванням 5, так і 1.

12345678910111213
import pandas as pd from sklearn.neighbors import KNeighborsClassifier df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Initialize and train a model knn5 = KNeighborsClassifier().fit(X, y) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X, y) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X, y)) print('1 Neighbor score:',knn1.score(X, y))
copy

Результати демонструють високу точність, навіть ідеальну для 1-найближчого сусіда.

Однак ці оцінки не є надійними, оскільки оцінювання виконувалося на навчальній вибірці — тих самих даних, на яких модель навчалася. У такому випадку модель просто передбачає вже відомі їй приклади.

Для коректної оцінки якості модель необхідно перевіряти на даних, з якими вона раніше не стикалася.

question mark

Як KNeighborsClassifier робить передбачення для нового екземпляра?

Select the correct answer

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

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

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

Секція 4. Розділ 2
some-alt