You are on page 1of 8

Лабораторна робота №3

ТЕМА: Алгоритми класифікації із застосуванням бібліотек


Мета класифікації полягає у визначенні, до якої з відомих категорій
належить нова річ.
Теоретичні відомості
Scikit-Learn спрощує процес створення класифікатора й допомагає
більш чітко виділити концепції машинного навчання. Її методи охоплюють
усе, що може знадобитися під час аналітики даних: алгоритми класифікації
та регресії, кластеризації, валідації та вибір моделей. Також її можна
застосовувати для зменшення розмірності даних і виділення ознак.
Scikit-Learn надає доступ до різних алгоритмів класифікації. Основні з
них:

− метод k-найближчих сусідів (K-Nearest Neighbors);

− метод опорних векторів (Support Vector Machines);

− класифікатор дерева рішень (Decision Tree Classifier)

− класифікатор випадковий ліс (Random Forests);

− наївний байесівський метод (Naive Bayes);

− лінійний дискримінантний аналіз (Linear Discriminant Analysis);

− логічна регресія (Logistic Regression).

Метод K-найближчих сусідів за допомогою Scikit-Learn у Python


Переваги методу:

● Проста реалізація.

● Не вимагає навчання перед тим, як робити прогнози у реальному


часі.
● Оскільки метод не вимагає навчання перед виконанням
прогнозів, то нові дані можна додавати без проблем.
● Для реалізації потрібні лише два параметри – значення K та
функція відстані (наприклад, евклідова – 'euclidean', косінусоїдна
– 'cosine', манхеттенська – 'manhattan', Хеммінга – 'hamming',
Мінковського – 'minkowski' тощо).
Переваги методу:

● Метод погано працює з даними великого розміру, тому що при


великій кількості вимірювань стає складно обчислювати відстань
у кожному вимірі.
● Метод має високу вартість прогнозування великих наборів даних.
Це пов'язано з тим, що у великих наборах даних вартість
обчислення відстані між новою точкою та кожною існуючою
точкою стає вищою.
● Метод погано працює з категоріальними ознаками, оскільки
важко знайти відстань між вимірами з категоріальними ознаками.
Розглянемо ключові параметри sklearn.neighbors.KNeighborsClassifier:
n_neighbors за замовчуванням рівний 5, що є значенням k, тобто
вибираються найближчі k точок.
metric використовується для вимірювання відстані, за замовчуванням
Мінковського, яке є евклідовою відстанню з p = 2. Для вимірювання
евклідової відстані = 'euclidean', косінусоїдної = 'cosine', манхеттенської =
'manhattan', Хеммінга = 'hamming', Мінковського = 'minkowski' та інші.
p – це формула вимірювання відстані. За замовчуванням, цей параметр
дорівнює 2, що означає, що формула Евклідова відстані використовується
для вимірювання відстані за замовчуванням. Його також можна встановити
на 1, використовуючи формулу манхеттенської відстані для вимірювання
відстані.
Щоб візуалізувати це, скористаємося pandas.plotting.scatter_matrix для
виведення матриці графіків розсіювання, які показують різні взаємодії між
параметрами.
Метод fit використовується для навчання моделі (адаптації під
навчальні дані)

Результат виконання цієї частини коду:

Розділимо за допомогою модуля train_test_split наш набір даних на дві


частини – навчальну і тестову. За це відповідають параметри train_size і
test_size. Але обидва вони не потрібні, достатньо лише одного з них. Якщо ви
явно встановлюєте обидва параметри, вони мають становити у сумі 1.
Виберемо, що навчальна частина train_size = 0.8 (тобто 80% даних) і test_size
= 0.2 (тобто 20% даних). Тобто з 150 записів навчальний набір міститиме 120
записів, а тестовий набір – 30 записів.

Перед тим, як робити будь-які фактичні прогнози, завжди


рекомендується масштабувати функції, щоб вони могли бути оцінені
одноманітно. Оскільки діапазон значень необроблених даних дуже
відрізняється, у деяких алгоритмах машинного навчання цільові функції не
будуть працювати належним чином без нормалізації. Наприклад, більшість
класифікаторів обчислюють відстань між двома точками по евклідовій
відстані. Якщо одна з функцій має широкий діапазон значень, відстань
регулюватиметься цією функцією. Отже, діапазон всіх функцій повинен бути
нормалізований так, щоб кожна функція вносила внесок приблизно
пропорційно кінцевій відстані. Алгоритм градієнтного спуску (який
використовується у навчанні нейронних мереж та інших алгоритмах
машинного навчання) також швидше сходиться з нормалізованими
функціями.
Метод score використовується обчислення частки правильних
передбачень серед тестових даних. Для оцінювання класифікатора
найчастіше використовуваними метриками є матриця неточностей, точність,
чуйність та оцінка f1. Для обчислення цих показників можна
використовувати методи confusion_matrix та classification_report із
sklearn.metrics.

Матриця неточностей – це таблиця або діаграма, яка показує точність моделі


по відношенню до двох або більше класів. Передбачення моделі будуть
розташовуватися на осі абсцис, а результати/точність на осі ординат.
Клітинки заповнюються кількістю прогнозів, які робить модель. Правильні
передбачення можна знайти на діагональній лінії від верхнього лівого кута
до правого нижнього.
У бібліотеці Scikit-Learn вже вбудована можливість створювати звіти
щодо продуктивності класифікатора. Звіт повертає прогноз та f1-бал.
Точність це відсоток прикладів, які ваша модель позначила як клас А, який
насправді належав класу А (справжні позитивні результати проти
помилкових позитивних результатів), а f1-оцінка – це середнє значення
точності та відгуку.

Подивимося, як зміниться результат класифікації нових квітів, якщо до


нормованих даних застосувати класифікатор наївного Байєса (гаусівський).

ЗАВДАННЯ
Розробіть класифікатор за варіантом із застосуванням Scikit-Learn.
Підготуйте тренувальний (навчальний) та тестовий набори даних для
класифікатора. Дані взяти з файлу за варіантом та розділити на дві частини,
де 80% віднести до тренувального (навчального) набору, а 20% до тестового.
Навчіть класифікатор на тренувальному наборі даних. Застосуйте
класифікатор до тестового набору даних. Оцініть класифікатор (побудуйте
звіт щодо продуктивності класифікатора). Побудуйте матрицю неточностей.
Виконайте масштабування (нормалізацію) функції та проаналізуйте, чи
вплинуло це на продуктивність класифікатора. Підберіть параметри
класифікатора, за якого найбільша частка правильних передбачень серед
тестових даних.
Варіанти:
1. Класифікатор Методу k-найближчих сусідів (косінусоїдна відстань). Дані
з файлу «Market_Arrivals.csv».
2. Класифікатор Методу наївного Байєса (поліноміальний). Дані з файлу
«Prestige.csv».
3. Класифікатор Методу k-найближчих сусідів (евклідова відстань). Дані з
файлу «diamonds_select.csv».
4. Класифікатор Методу опорних векторів. Дані з файлу «Vehicle.csv».
5. Класифікатор Методу k-найближчих сусідів (манхеттенська відстань).
Дані з файлу «mpg2.csv».
6. Класифікатор лінійний дискримінантний аналіз. Дані з файлу
«Mall_Customers.csv».
7. Класифікатор Методу k-найближчих сусідів (відстань Хеммінга). Дані з
файлу «seeds.csv».
8. Класифікатор дерева рішень. Дані з файлу «Glass.csv».
9. Класифікатор Методу k-найближчих сусідів (відстань Мінковського).
Дані з файлу «VertebralColumn.csv».
10. Класифікатор Методу наївного Байєса (гаусівський). Дані з файлу
«balance-scale.csv».
11. Класифікатор випадковий ліс. Дані з файлу «Vowel.csv».
12. Класифікатор логічна регресія (Logistic Regression). Дані з файлу
«BreastCancer.csv».

Нагадую: що у висновках треба писати не загальні (універсальні)


фрази, а аналіз отриманих саме Вами результатів! Тобто фрази «Розроблено
класифікатор…», «Розглянуто бібліотеку…» тощо – це писати не треба, це
пусті речення. У завданні останнім реченням вимагається підібрати
параметри класифікатора, за якого найбільша частка правильних передбачень
серед тестових даних. Тож проаналізуйте, що і як саме впливає на точність
класифікатора, який навчено саме на Вашому наборі даних.

You might also like