Naive Bayes is among one of the most simple and powerful algorithms for classification based on Bayes’ Theorem with an assumption of independence among predictors.
What is Bayes Theorem?
In Statistics and probability theory, Bayes’ theorem describes the probability of an event, based on prior knowledge of conditions that might be related to the event. It serves as a way to figure out the conditional probability.
Given a Hypothesis H and evidence E, Bayes’ Theorem states that the relationship between the probability of Hypothesis before getting the evidence P(H) and the probability of the hypothesis after getting the evidence P(H|E) is :
#Mathmetical formula of bayes theorm P ( H ∣ E ) = P ( E ∣ H ) P ( H ) / P ( E )
Bayes’ Theorem Example
Let’s suppose we have a Deck of Cards, we wish to find out the “Probability of the Card we picked at random to be an Ace given that it is a Face Card“. So, according to Bayes Theorem, we can solve this problem.
First, we need to find out the probability
P(Ace) which is 4/52 as there are 4 Aces in a Deck of Cards.
P(Face|Ace) is equal to 1 as all the Aces are face Cards.
P(Face) is equal to 12/52 as there are 3 Face Cards in a Suit of 13 cards and there are 4 Suits in total.
Putting these all values into the Bayes theorem you can find the result of this.
How to implement it Using python
Importing all related libraries
import numpy as np from sklearn.naive_bayes import BernoulliNB
Creating training data and target column
# Some data is created to train with X = np.array([[0, 1, 0], [0, 1, 1], [1, 1, 0]]) # These are our target values (Classes: good or Not a good) y = np.array(['good', 'Not a good', 'Not a good'])
Now data is ready to fit it into the Naive Bayer Classifier.
array([[0, 1, 0], [0, 1, 1], [1, 1, 0]])
array(['good', 'Not a good', 'Not a good'], dtype='<U10')
# This is the code we need for the Bernoulli model model = BernoulliNB() # We train the model on our data model.fit(X, y)
BernoulliNB(alpha=1.0, binarize=0.0, class_prior=None, fit_prior=True)
Predict the result:
print("What does our model think this should be?") print("Answer: %s!" % clf.predict([[0, 0, 0]]))
What does our model think this should be? Answer: good!