Рубрики
Без рубрики

Naive Bayes классификатор с Python

Теперь, когда у нас есть некоторая идея о теореме Байеса, давайте посмотрим, как работает наивные байес.

Автор оригинала: Pankaj Kumar.

Naive Bayes классификатор с Python

Наивные Bayes Classifier – это вероятностный классификатор и основан на теореме Bayes.

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

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

Naive Bayes Theorem

Теорема Байс

Теорема Bayes дает нам вероятность случая события A, если произошло, что произошло событие B. Например.

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

  • P (A | B) – называется задней вероятностью
  • P (b | a) – это условная вероятность B данной А.
  • P (a) – называется предыдущей вероятностью события A.
  • P (b) – независимо от гипотезы, это вероятность события B для возникновения.

Теперь, когда у нас есть некоторая идея о теореме Байеса, давайте посмотрим, как работает наивные байес.

Как работает наивный байс классификатор?

Чтобы продемонстрировать, как работает Naive Bayes Classifier, мы рассмотрим проблему классификации SPAM по электронной почте, которая классифицирует, которая классифицирует, является ли электронная почта спамом или нет.

Давайте рассмотрим, что у нас есть полные 12 электронных писем. 8 из которых не являются спамом и оставшиеся 4 – спам.

  • Количество не спама электронные письма – 8
  • Количество спам-электронных писем – 4
  • Всего писем – 12
  • Поэтому/12,666,/12.333

Предположим, весь корпус содержит всего четыре слова [Друг, предложение, деньги, замечательный] Отказ Следующая гистограмма представляет значение слова каждого слова в каждой категории.

Слово считается по почте

Теперь мы рассчитаем условные вероятности каждого слова.

Приведенная ниже формула рассчитала вероятность слова Друг произойти с учетом почты не спам.

Расчет условных вероятностей

Расчет вероятностей для всего текстового корпуса.

Условные вероятности каждого слова

Теперь, когда у нас есть все предыдущие и условные вероятности, мы можем нанести ему теорему Bayes.

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

Расчет вероятностей оценки

Вероятность электронного письма будет спамом, учитываемым словами, и деньги больше, чем вероятность того, что почта не является спамом. (0,0532> 0,00424).

Следовательно, наш классификатор классифицирует это письмо, чтобы быть спамом. Таким образом, мы только что рассчитали заднюю вероятность, как показано в теореме Байеса.

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

Эта проблема также известна как проблема «нулевая частота». Чтобы избежать этого, мы используем методы сглаживания. I.E. Оценка Лапласа. Методы сглаживания не влияют на условные вероятности.

Типы наивных байесов классификатор:

  • Многоизоляция – Используется для дискретных средств. Тот, который мы описали в примере выше, является примером многоизоляционного типа наивных байесов.
  • Гауссов – Этот тип Naive Bayes Classifier предполагает данные для выполнения нормального распределения.
  • Бернулли – Этот тип классификатора полезен, когда наши векторы объектов являются двоичными.

Реализация наивных байесов с Python

Мы воспользуемся набором данных рака молочной железы Висконсин. Вы можете узнать больше о DataSet здесь Отказ

Scikit Учитесь нам Гауссианнб Класс для реализации Naive Bayes Algorithm.

#Loading the Dataset
from sklearn.datasets import load_breast_cancer

data_loaded = load_breast_cancer()
X = data_loaded.data
y = data_loaded.target

Набор данных имеет 30 функций, использующих, какое предсказание должно быть сделано. Мы можем получить доступ к данным, используя .дата метод. Набор данных имеет функции и целевые переменные.

#Splitting the dataset into training and testing variables
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2,random_state=20)

#keeping 80% as training data and 20% as testing data.

Теперь, импортируя Gaussian Naive Bayes Class и подготовка к ней тренировочных данных.

from sklearn.naive_bayes import GaussianNB

#Calling the Class
naive_bayes = GaussianNB()

#Fitting the data to the classifier
naive_bayes.fit(X_train , y_train)

#Predict on test data
y_predicted = naive_bayes.predict(X_test)

.Фит метод Гауссианнб Класс требует данных о функциях (x_train) и целевых переменных в виде входных аргументов (y_train).

Теперь давайте найдем, насколько точна наша модель использует метрики точности.

#Import metrics class from sklearn
from sklearn import metrics

metrics.accuracy_score(y_predicted , y_test)

Точность .956140350877193.

Мы получили точность около 95,61%

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

Заключение

В этой статье мы получили некоторую интуицию о классификаторе Naive Bayes. Мы также видели, как реализовать Naive Bayes, используя Sklearn. Счастливое узнать!