Что такое Классификация?

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

Как работает классификация?

Учитывая набор точек обучающих данных вместе с целевыми метками, классификация определяет метку класса для немаркированного тестового примера.

Приложения алгоритмов классификации

Классификация данных имеет несколько применений в самых разных отраслях.Например, классификацию можно использовать для фильтрации электронной почты (спама и не спама), распознавания речи, распознавания рукописного ввода, биометрической идентификации, классификации документов и многих других задач. более.

Алгоритмы классификации в машинном обучении

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

Позвольте мне продемонстрировать, как работает один из этих алгоритмов классификации и как использовать Scikit Learn и библиотеку Pandas для его реализации на Python.

K-ближайшие соседи (KNN)

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

Реализация K-ближайших соседей в Python

Загружаем необходимые библиотеки

import numpy as np
import pandas as pd

import matplotlib.pyplot as plt

from sklearn.datasets import make_blobs
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split

Создание набора данных

Давайте создадим собственный набор данных с помощью класса make_blobs.

X, y = make_blobs(n_samples = 500, n_features = 2, centers = 4,cluster_std = 1.5, random_state = 4)

Отображение графика рассеяния случайно сгенерированных данных

plt.scatter(X[:,0], X[:,1], c=y, marker= '*',s=100,edgecolors='black')
plt.show()

Давайте разделим данные на наборы данных для обучения и тестирования.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state = 0)

Обучение

Начнем алгоритм с k=5 и k=2.

knn5 = KNeighborsClassifier(n_neighbors = 5).fit(X_train,y_train)
knn2 = KNeighborsClassifier(n_neighbors=1).fit(X_train,y_train)

Прогнозы для классификаторов KNN

y_pred_5 = knn5.predict(X_test)
y_pred_2 = knn2.predict(X_test)

давайте предскажем точность для обоих значений k

from sklearn.metrics import accuracy_score
print("Accuracy with k=5", accuracy_score(y_test, y_pred_5))
print("Accuracy with k=2", accuracy_score(y_test, y_pred_2))

output:
  Accuracy with k=5 0.936
  Accuracy with k=2 0.904

Как видите, модель с k=5 имеет точность 93,60%, а модель с k=2 — 90,04%.

Визуализация прогнозов

plt.figure(figsize = (15,5))
plt.subplot(1,2,1)
plt.scatter(X_test[:,0], X_test[:,1], c=y_pred_5, marker= '*', s=100,edgecolors='black')
plt.title("Predicted values with k=5", fontsize=20)

plt.subplot(1,2,2)
plt.scatter(X_test[:,0], X_test[:,1], c=y_pred_2, marker= '*', s=100,edgecolors='black')
plt.title("Predicted values with k=2", fontsize=20)
plt.show()

Заключение

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

KNN — это один из нескольких алгоритмов слабого обучения, которые не генерируют прогнозы с использованием модели обучения. KNN мгновенно генерирует прогнозы, усредняя сходство между поступающим наблюдением и уже существующими данными.