KNeighborsClassifier
Під час створення фінального оцінювача в конвеєрі було обрано модель KNeighborsClassifier
. У цьому розділі наведено коротке пояснення принципу роботи цього алгоритму.
Принципи роботи моделей не є основною темою цього курсу, тому не хвилюйтеся, якщо щось здається незрозумілим. Детальніше це пояснюється в інших курсах, таких як Linear Regression with Python або Classification with Python.
k-Найближчих сусідів
k-найближчих сусідів (k-NN) — це алгоритм машинного навчання, який прогнозує результати, знаходячи найбільш схожі приклади у навчальній вибірці.
KNeighborsClassifier
— це реалізація цього алгоритму у Scikit-learn для задач класифікації. Процес прогнозування відбувається наступним чином:
- Для нового прикладу визначають k найближчих навчальних прикладів за схожістю ознак. Вони називаються сусідами.
- Визначають найчастіший клас серед k сусідів. Цей клас стає прогнозом для нового прикладу.
Параметр k визначає кількість сусідів, яких слід враховувати. За замовчуванням він дорівнює 5. Різні значення k можуть призводити до різних прогнозів, тому це гіперпараметр — параметр, який обирається до навчання і безпосередньо впливає на поведінку моделі.
Експериментування з різними значеннями k та вибір найкращого для продуктивності моделі називається налаштуванням гіперпараметрів. Цей процес є важливим для оптимізації моделі.
KNeighborsClassifier під час .fit()
На відміну від більшості моделей машинного навчання, KNeighborsClassifier
під час навчання лише зберігає навчальний набір. Проте, навіть якщо навчання не займає часу, виклик .fit(X, y)
є обов'язковим, щоб модель запам'ятала навчальний набір.
KNeighborsClassifier під час .predict()
Під час прогнозування KNeighborsClassifier
жадібно знаходить k найближчих сусідів для кожного нового екземпляра.
У наведених вище gif-анімаціях використовуються лише дві ознаки: 'body_mass_g'
та 'culmen_depth_mm'
, оскільки візуалізувати багатовимірні графіки складно. Додавання додаткових ознак, ймовірно, допоможе моделі краще розділяти зелені та червоні точки даних, що дозволить KNeighborsClassifier
робити точніші прогнози.
Приклад коду KNeighborsClassifier
Створення KNeighborsClassifier
, навчання моделі та оцінка її точності за допомогою методу .score()
. Набір даних у файлі .csv
вже попередньо оброблений.
Кількість сусідів (k) задається аргументом n_neighbors
під час ініціалізації KNeighborsClassifier
. Спробуйте як значення за замовчуванням 5, так і 1.
12345678910111213import 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))
Результати демонструють високу точність, навіть ідеальну для 1-найближчого сусіда.
Однак ці оцінки не є надійними, оскільки оцінювання виконувалося на навчальній вибірці — тих самих даних, на яких модель навчалася. У такому випадку модель просто передбачає вже відомі їй приклади.
Для коректної оцінки якості модель необхідно перевіряти на даних, з якими вона раніше не стикалася.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.13
KNeighborsClassifier
Свайпніть щоб показати меню
Під час створення фінального оцінювача в конвеєрі було обрано модель KNeighborsClassifier
. У цьому розділі наведено коротке пояснення принципу роботи цього алгоритму.
Принципи роботи моделей не є основною темою цього курсу, тому не хвилюйтеся, якщо щось здається незрозумілим. Детальніше це пояснюється в інших курсах, таких як Linear Regression with Python або Classification with Python.
k-Найближчих сусідів
k-найближчих сусідів (k-NN) — це алгоритм машинного навчання, який прогнозує результати, знаходячи найбільш схожі приклади у навчальній вибірці.
KNeighborsClassifier
— це реалізація цього алгоритму у Scikit-learn для задач класифікації. Процес прогнозування відбувається наступним чином:
- Для нового прикладу визначають k найближчих навчальних прикладів за схожістю ознак. Вони називаються сусідами.
- Визначають найчастіший клас серед k сусідів. Цей клас стає прогнозом для нового прикладу.
Параметр k визначає кількість сусідів, яких слід враховувати. За замовчуванням він дорівнює 5. Різні значення k можуть призводити до різних прогнозів, тому це гіперпараметр — параметр, який обирається до навчання і безпосередньо впливає на поведінку моделі.
Експериментування з різними значеннями k та вибір найкращого для продуктивності моделі називається налаштуванням гіперпараметрів. Цей процес є важливим для оптимізації моделі.
KNeighborsClassifier під час .fit()
На відміну від більшості моделей машинного навчання, KNeighborsClassifier
під час навчання лише зберігає навчальний набір. Проте, навіть якщо навчання не займає часу, виклик .fit(X, y)
є обов'язковим, щоб модель запам'ятала навчальний набір.
KNeighborsClassifier під час .predict()
Під час прогнозування KNeighborsClassifier
жадібно знаходить k найближчих сусідів для кожного нового екземпляра.
У наведених вище gif-анімаціях використовуються лише дві ознаки: 'body_mass_g'
та 'culmen_depth_mm'
, оскільки візуалізувати багатовимірні графіки складно. Додавання додаткових ознак, ймовірно, допоможе моделі краще розділяти зелені та червоні точки даних, що дозволить KNeighborsClassifier
робити точніші прогнози.
Приклад коду KNeighborsClassifier
Створення KNeighborsClassifier
, навчання моделі та оцінка її точності за допомогою методу .score()
. Набір даних у файлі .csv
вже попередньо оброблений.
Кількість сусідів (k) задається аргументом n_neighbors
під час ініціалізації KNeighborsClassifier
. Спробуйте як значення за замовчуванням 5, так і 1.
12345678910111213import 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))
Результати демонструють високу точність, навіть ідеальну для 1-найближчого сусіда.
Однак ці оцінки не є надійними, оскільки оцінювання виконувалося на навчальній вибірці — тих самих даних, на яких модель навчалася. У такому випадку модель просто передбачає вже відомі їй приклади.
Для коректної оцінки якості модель необхідно перевіряти на даних, з якими вона раніше не стикалася.
Дякуємо за ваш відгук!