Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте K-NN з декількома ознаками | Класифікатор K-NN
Класифікація з Python

bookK-NN з декількома ознаками

Тепер ви розумієте, як працює k-NN з однією ознакою. Перейдемо до трохи складнішого прикладу, який використовує дві ознаки: вага та ширина.

У цьому випадку потрібно знаходити сусідів на основі і ширини, і ваги. Але тут виникає невелика проблема. Давайте побудуємо графік цукерок і подивимось, що піде не так:

Ви можете побачити, що вага змінюється від 12 до 64, тоді як ширина лише в межах від 5 до 12. Оскільки діапазон ширини набагато менший, цукерки виглядають майже вертикально вирівняними. Якщо зараз обчислювати відстані, вони в основному відображатимуть різницю у вазі, ніби ширина взагалі не враховується.

Однак є рішення — масштабування даних.

Тепер і вага, і ширина знаходяться в однаковому масштабі та центровані навколо нуля. Це можна зробити за допомогою класу StandardScaler з sklearn. StandardScaler просто віднімає середнє значення вибірки і ділить результат на стандартне відхилення вибірки:

Xscaled=XxˉsX_{scaled} = \frac{X - \bar x}{s}

StandardScaler центрує дані навколо нуля. Хоча центрування не є обов'язковим для k-NN і може викликати плутанину, наприклад, «як вага може бути від’ємною», це лише спосіб подання даних комп’ютеру. Деякі моделі вимагають центрування, тому рекомендується за замовчуванням використовувати StandardScaler для масштабування.

Насправді, дані слід завжди масштабувати перед використанням k-Nearest Neighbors. Після масштабування даних можна знаходити сусідів:

У випадку двох ознак k-NN визначає кругове оточення, що містить потрібну кількість сусідів. Для трьох ознак це стає сферою. У вищих вимірах оточення набуває складнішої форми, яку неможливо візуалізувати, проте основні обчислення залишаються незмінними.

question mark

Оберіть правильне твердження.

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Awesome!

Completion rate improved to 4.17

bookK-NN з декількома ознаками

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

Тепер ви розумієте, як працює k-NN з однією ознакою. Перейдемо до трохи складнішого прикладу, який використовує дві ознаки: вага та ширина.

У цьому випадку потрібно знаходити сусідів на основі і ширини, і ваги. Але тут виникає невелика проблема. Давайте побудуємо графік цукерок і подивимось, що піде не так:

Ви можете побачити, що вага змінюється від 12 до 64, тоді як ширина лише в межах від 5 до 12. Оскільки діапазон ширини набагато менший, цукерки виглядають майже вертикально вирівняними. Якщо зараз обчислювати відстані, вони в основному відображатимуть різницю у вазі, ніби ширина взагалі не враховується.

Однак є рішення — масштабування даних.

Тепер і вага, і ширина знаходяться в однаковому масштабі та центровані навколо нуля. Це можна зробити за допомогою класу StandardScaler з sklearn. StandardScaler просто віднімає середнє значення вибірки і ділить результат на стандартне відхилення вибірки:

Xscaled=XxˉsX_{scaled} = \frac{X - \bar x}{s}

StandardScaler центрує дані навколо нуля. Хоча центрування не є обов'язковим для k-NN і може викликати плутанину, наприклад, «як вага може бути від’ємною», це лише спосіб подання даних комп’ютеру. Деякі моделі вимагають центрування, тому рекомендується за замовчуванням використовувати StandardScaler для масштабування.

Насправді, дані слід завжди масштабувати перед використанням k-Nearest Neighbors. Після масштабування даних можна знаходити сусідів:

У випадку двох ознак k-NN визначає кругове оточення, що містить потрібну кількість сусідів. Для трьох ознак це стає сферою. У вищих вимірах оточення набуває складнішої форми, яку неможливо візуалізувати, проте основні обчислення залишаються незмінними.

question mark

Оберіть правильне твердження.

Select the correct answer

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

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

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

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