Классифицируйте различные группы с помощью диаграммы рассеяния

Привет, энтузиаст ML .. !!

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

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

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

Что такое классификатор?

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

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

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

Создайте классификатор, используя некоторые обучающие данные

Возьмите точку входа (a, b). Эта входная точка принадлежит class_x, если a больше или равно b; в противном случае он принадлежит class_y.

Чтобы решить эту проблему, создайте файл Python и назовите его classifier.py. Вы также можете создать код Python в Jupyter Notebook или Google Colab. Совершенно нормально.

classifier.py

Импортируйте следующие пакеты

import numpy as np
import matplotlib.pyplot as plt

Создайте массив некоторых образцов данных

X = np.array([[3,1], [2,5], [1,8], [6,4], [5,2], [3,5], [4,7], [4,-1]])

Поскольку это разновидность машинного обучения с учителем, давайте добавим к данным несколько ярлыков. Обозначьте данные, принадлежащие class_x, как 0, а данные, которые принадлежат class_y, как 1.

y = [0, 1, 1, 0, 0, 1, 1, 0]

Здесь мы имеем дело только с двумя классами. Если у нас есть N классов, тогда значения y будут в диапазоне от 0 до N-1. Давайте разделим данные на классы по ярлыкам.

class_x = np.array([X[i] for i in range(len(X)) if y[i]==0])
class_y = np.array([X[i] for i in range(len(X)) if y[i]==1])

Давайте построим график, чтобы получить более обобщенную форму наших данных.

plt.figure()
plt.scatter(class_x[:,0], class_x[:,1], color='black', marker='s')
plt.scatter(class_y[:,0], class_y[:,1], color='black', marker='x')
plt.show()

Это диаграмма рассеяния, где мы используем квадраты и кресты для нанесения точек. мы используем квадраты для обозначения точек в class_x и крестики для обозначения точек в class_y.

Теперь, если кто-то попросит вас визуально разделить эти точки данных на два класса, что бы вы сделали? Вы просто рисуете линию, верно? Итак, давайте сделаем это.

line_x = range(10)
line_y = line_x #straight line equation

Все мы знаем, что уравнение прямой имеет вид y = mx + c. где m - наклон, а c - постоянная величина. y и x - переменные. Итак, чтобы разделить вышеуказанные двоичные классы, мы используем прямую линию. Мы просто создали линию, используя математическое уравнение y = x. Изобразим это на нашем графике.

plt.figure()
plt.scatter(class_x[:,0], class_x[:,1], color='black', marker='s')
plt.scatter(class_y[:,0], class_y[:,1], color='black', marker='x')
plt.plot(line_x, line_y, color='black', linewidth=3)
plt.show()

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

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

Ну вот и все. Спасибо за чтение. Если вы найдете эту статью информативной, не забудьте аплодировать и поделиться ею со своим сообществом.