Учебники

Алгоритмы классификации — Введение

Классификация может быть определена как процесс прогнозирования класса или категории по наблюдаемым значениям или заданным точкам данных. Категоризованный вывод может иметь форму, такую ​​как «Черный» или «Белый» или «Спам» или «Нет спама».

Математически классификация — это задача приближения функции отображения (f) от входных переменных (X) к выходным переменным (Y). Это в основном относится к контролируемому машинному обучению, в котором цели также предоставляются вместе с набором входных данных.

Примером проблемы классификации может быть обнаружение спама в электронных письмах. Может быть только две категории вывода: «спам» и «нет спама»; следовательно, это двоичная классификация типов.

Чтобы реализовать эту классификацию, нам сначала нужно обучить классификатор. В этом примере электронные письма «спам» и «не спам» будут использоваться в качестве обучающих данных. После успешного обучения классификатора его можно использовать для обнаружения неизвестного электронного письма.

Типы учащихся в классификации

У нас есть два типа учащихся в соответствии с проблемами классификации —

Ленивые ученики

Как следует из названия, такие ученики ждут появления данных тестирования после сохранения данных обучения. Классификация проводится только после получения данных тестирования. Они тратят меньше времени на обучение, но больше времени на прогнозирование. Примерами ленивых учеников являются K-ближайший сосед и рассуждения на основе случая.

Нетерпеливые ученики

В отличие от ленивых учеников, нетерпеливые ученики строят классификационную модель, не дожидаясь появления данных тестирования после сохранения обучающих данных. Они тратят больше времени на тренировки, но меньше на прогнозирование. Примерами усердных учеников являются деревья решений, наивные байесовские и искусственные нейронные сети (ANN).

Создание классификатора в Python

Scikit-learn, библиотека Python для машинного обучения может использоваться для построения классификатора в Python. Шаги для создания классификатора в Python следующие:

Шаг 1: Импорт необходимого пакета Python

Для построения классификатора с помощью scikit-learn нам нужно его импортировать. Мы можем импортировать его, используя следующий скрипт —

import sklearn

Шаг 2: Импорт набора данных

После импорта необходимого пакета нам понадобится набор данных для построения модели прогнозирования классификации. Мы можем импортировать его из набора данных sklearn или использовать другой согласно нашему требованию. Мы собираемся использовать диагностическую базу данных Sklearn по раку молочной железы в Висконсине. Мы можем импортировать его с помощью следующего скрипта —

from sklearn.datasets import load_breast_cancer

Следующий скрипт загрузит набор данных;

data = load_breast_cancer()

Нам также необходимо организовать данные, и это можно сделать с помощью следующих сценариев:

label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']

Следующая команда напечатает названия меток, «злокачественные» и «доброкачественные» в случае нашей базы данных.

print(label_names)

Результатом вышеприведенной команды являются имена меток —

['malignant' 'benign']

Эти метки отображаются в двоичные значения 0 и 1. Злокачественный рак представлен 0, а доброкачественный рак представлен 1.

Имена и значения функций этих меток можно увидеть с помощью следующих команд:

print(feature_names[0])

Результатом вышеприведенной команды являются имена признаков для метки 0, т.е. злокачественный рак —

mean radius

Точно так же названия функций для метки могут быть получены следующим образом —

print(feature_names[1])

Результатом вышеприведенной команды являются имена признаков для метки 1, т. Е. Доброкачественного рака —

mean texture

Мы можем распечатать функции для этих этикеток с помощью следующей команды —

print(features[0])

Это даст следующий вывод —

[1.799e+01 1.038e+01 1.228e+02 1.001e+03 1.184e-01 2.776e-01 3.001e-01
 1.471e-01 2.419e-01 7.871e-02 1.095e+00 9.053e-01 8.589e+00 1.534e+02
 6.399e-03 4.904e-02 5.373e-02 1.587e-02 3.003e-02 6.193e-03 2.538e+01
 1.733e+01 1.846e+02 2.019e+03 1.622e-01 6.656e-01 7.119e-01 2.654e-01
 4.601e-01 1.189e-01]

Мы можем распечатать функции для этих этикеток с помощью следующей команды —

print(features[1])

Это даст следующий вывод —

[2.057e+01 1.777e+01 1.329e+02 1.326e+03 8.474e-02 7.864e-02 8.690e-02
7.017e-02  1.812e-01 5.667e-02 5.435e-01 7.339e-01 3.398e+00 7.408e+01
5.225e-03  1.308e-02 1.860e-02 1.340e-02 1.389e-02 3.532e-03 2.499e+01
2.341e+01  1.588e+02 1.956e+03 1.238e-01 1.866e-01 2.416e-01 1.860e-01
2.750e-01  8.902e-02]

Шаг 3: Организация данных в наборы для обучения и тестирования

Поскольку нам нужно протестировать нашу модель на невидимых данных, мы разделим наш набор данных на две части: обучающий набор и тестовый набор. Мы можем использовать функцию train_test_split () пакета python sklearn для разделения данных на наборы. Следующая команда импортирует функцию —

from sklearn.model_selection import train_test_split

Теперь следующая команда разделит данные на данные обучения и тестирования. В этом примере мы используем 40 процентов данных для целей тестирования и 60 процентов данных для целей обучения —

train, test, train_labels, test_labels = 
   train_test_split(features,labels,test_size = 0.40, random_state = 42)

Шаг 4: Оценка модели

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

from sklearn.naive_bayes import GaussianNB

Теперь, инициализируйте модель следующим образом —

gnb = GaussianNB()

Далее с помощью следующей команды мы можем обучить модель —

model = gnb.fit(train, train_labels)

Теперь для целей оценки нам нужно сделать прогнозы. Это можно сделать с помощью функции предиката () следующим образом:

preds = gnb.predict(test)
print(preds)

Это даст следующий вывод —

[1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0
 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0
 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0
 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0
 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0
 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1
 0 0 1 1 0 1]

Приведенные выше серии 0 и 1 в выходных данных являются прогнозируемыми значениями для классов злокачественных и доброкачественных опухолей.

Шаг 5: Нахождение точности

Мы можем найти точность построения модели на предыдущем шаге, сравнив два массива, а именно test_labels и preds . Мы будем использовать функцию precision_score () для определения точности.

from sklearn.metrics import accuracy_score
print(accuracy_score(test_labels,preds))
0.951754385965

Приведенные выше результаты показывают, что классификатор NaïveBayes имеет точность 95,17%.

Метрики оценки классификации

Работа не выполнена, даже если вы завершили реализацию своего приложения или модели машинного обучения. Мы должны выяснить, насколько эффективна наша модель? Могут быть разные метрики оценки, но мы должны тщательно их выбирать, потому что выбор метрик влияет на то, как измеряется и сравнивается производительность алгоритма машинного обучения.

Ниже приведены некоторые важные метрики оценки классификации, среди которых вы можете выбирать, основываясь на наборе данных и типе проблемы.

Матрица путаницы

  • Матрица путаницы — это самый простой способ измерить производительность задачи классификации, когда выходные данные могут быть двух или более типов классов.

Матрица путаницы — это самый простой способ измерить производительность задачи классификации, когда выходные данные могут быть двух или более типов классов.

Различные алгоритмы классификации ML

Ниже приведены некоторые важные алгоритмы классификации ML —

  • Логистическая регрессия
  • Машина опорных векторов (SVM)
  • Древо решений
  • Наивный Байес
  • Случайный Лес

Мы будем подробно обсуждать все эти алгоритмы классификации в следующих главах.

Приложения

Некоторые из наиболее важных приложений алгоритмов классификации следующие: