K-NN з декількома ознаками
Свайпніть щоб показати меню
Тепер ви розумієте, як працює k-NN з однією ознакою. Перейдемо до трохи складнішого прикладу, який використовує дві ознаки: вага та ширина.
У цьому випадку потрібно знаходити сусідів на основі і ширини, і ваги. Але тут виникає невелика проблема. Давайте побудуємо графік цукерок і подивимось, що піде не так:
Ви можете побачити, що вага змінюється від 12 до 64, тоді як ширина лише між 5 та 12. Оскільки діапазон ширини набагато менший, цукерки виглядають майже вертикально вирівняними. Якщо зараз обчислювати відстані, вони в основному відображатимуть різницю у вазі, ніби ширина взагалі не враховується.
Однак є рішення — масштабування даних.
Тепер і вага, і ширина знаходяться в одній шкалі та центровані навколо нуля. Це можна досягти за допомогою класу StandardScaler з sklearn. StandardScaler просто віднімає середнє значення вибірки та ділить результат на стандартне відхилення вибірки:
StandardScaler центрує дані навколо нуля. Хоча центрування не є обов'язковим для k-NN і може викликати плутанину, наприклад, «як вага може бути від'ємною», це лише спосіб подання даних для комп'ютера. Деякі моделі вимагають центрування, тому використання StandardScaler для масштабування за замовчуванням є доцільним.
Фактично, дані слід завжди масштабувати перед використанням k-Nearest Neighbors. Після масштабування даних можна знаходити сусідів:
У випадку двох ознак k-NN визначає кругове оточення, що містить потрібну кількість сусідів. Для трьох ознак це стає сферою. У вищих вимірах оточення набуває складнішої форми, яку неможливо візуалізувати, проте основні обчислення залишаються незмінними.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат