Автор оригинала: 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. Счастливое узнать!