В последних 7 проектах мы реализовали один и тот же проект с использованием разных алгоритмов классификации, а именно - Логистическая регрессия, KNN, SVM, Kernel SVM, Наивный байесовский, Дерево решений и Случайный лес.

Причина, по которой я написал отдельную статью для каждого алгоритма, состоит в том, чтобы понять интуицию, лежащую в основе каждого алгоритма.

# 100DaysOfMLCode # 100ProjectsInML

В реальном сценарии, когда перед нами возникает проблема, мы не можем предсказать, какой алгоритм будет работать лучше всего. Очевидно, из проблемы мы можем сказать, нужно ли нам применять алгоритм регрессии или классификации. Но заранее сложно определить, какой алгоритм регрессии или классификации применить. Только путем проб и ошибок и проверки показателей производительности мы можем сузить круг вопросов и выбрать определенные алгоритмы.

Сегодня я покажу вам, как сравнивать разные алгоритмы классификации и выбирать лучшие из них. Вместо того, чтобы реализовывать весь проект с использованием алгоритма, а затем обнаруживать, что производительность не является хорошей, мы сначала проверим производительность группы алгоритмов, а затем решим, какой из них использовать для реализации проекта.

Давайте начнем.

Цель проекта

Мы собираемся использовать тот же набор данных, что и в Project 10. Наша цель - оценить несколько алгоритмов классификации и выбрать лучшие по точности.

Примеры строк показаны ниже. Полный набор данных доступен здесь.

Шаг 1. Загрузите набор данных

Мы собираемся присвоить X независимые переменные «Пол», «Зарплата» и «Возраст». Зависимая переменная «Купленный iphone» фиксирует, купил ли пользователь телефон или нет. Мы присвоим это y.

Шаг 2. Преобразуйте пол в число

У нас есть категориальная переменная «Пол», которую мы должны преобразовать в число. Мы будем использовать класс LabelEncoder, чтобы преобразовать пол в число.

Шаг 3. Масштабирование функций

Помимо классификаторов дерева решений и случайного леса, другие классификаторы требуют, чтобы мы масштабировали данные. Итак, давайте сделаем это сейчас.

Шаг 4: Сравните алгоритмы классификации

Здесь и происходит все самое интересное :)

Я собираюсь сравнить 6 алгоритмов классификации - те, которые я рассмотрел в предыдущих проектах. Не стесняйтесь добавлять и тестировать других.

  • Логистическая регрессия
  • KNN
  • Ядро SVM
  • Наивный байесовский
  • Древо решений
  • Случайный лес

Мы будем использовать 10-кратную перекрестную проверку для оценки каждого алгоритма, и мы найдем среднюю точность и точность стандартного отклонения.

Сначала мы создадим список и добавим объекты различных классификаторов, которые мы хотим оценить. Затем мы просматриваем список и используем метод cross_val_score для получения точности.

Here is the output:
Logistic Regression: Mean Accuracy = 82.75% — SD Accuracy = 11.37%
K Nearest Neighbor: Mean Accuracy = 90.50% — SD Accuracy = 7.73%
Kernel SVM: Mean Accuracy = 90.75% — SD Accuracy = 9.15%
Naive Bayes: Mean Accuracy = 85.25% — SD Accuracy = 10.34%
Decision Tree: Mean Accuracy = 84.50% — SD Accuracy = 8.50%
Random Forest: Mean Accuracy = 88.75% — SD Accuracy = 8.46%

Заключение

Из результатов видно, что для этого конкретного набора данных KNN и Kernel SVM показали лучшие результаты, чем остальные. Итак, мы можем включить этих двоих в список для работы над этим проектом. Это точно такой же вывод, к которому мы пришли, реализуя каждый из этих алгоритмов по отдельности.

Надеюсь, вам было весело. Вы можете найти весь исходный код здесь.