Skip to main content

Machine Learning:Naive Bayes Classifier


Another post starts with you beautiful people!
Continuing our Machine Learning track today we will apply the Naive Bayes Classifier but before that we need to understand the Bayes Theorem. So let’s first understand the Bayes Theorem.

Bayes Theorem works on conditional probability. Conditional probability is the probability that something will happen, given that something else has already occurred. Using the conditional probability, we can calculate the probability of an event using its prior knowledge.
Below is the formula for calculating the conditional probability.
where
P(H) is the probability of hypothesis H being true. This is known as the prior probability.
P(E) is the probability of the evidence(regardless of the hypothesis).
P(E|H) is the probability of the evidence given that hypothesis is true.
P(H|E) is the probability of the hypothesis given that the evidence is there.

We can understand the above concept with a classic example of coin that I summarized as below picture-


Now understand the Naive Bayes Classifier in the following easiest way-

So you must be thinking in real world where we can apply this algo to solve a problem?
The answer is Email Classification ! To filter the Spam vs Ham.
Sound interesting right! let's start hands on to solve this email classification problem and build our model. Our goal is to train a Naive Bayes model to classify future SMS messages as either spam or ham.
We will follow below steps to achieve our goal-

  1. Convert the words ham and spam to a binary indicator variable(0/1)
  2. Convert the txt to a sparse matrix of TFIDF vectors
  3. Fit a Naive Bayes Classifier
  4. Measure your success using roc_auc_score
Importing required libraries-


I request you to please go through official document [sklearn.naive_bayes] of each library and read once.

Load our spam dataset-
Train the classifier if it is spam or ham based on the text:-

Convert the spam and ham to 1 and 0 values respectively for probability testing:-

Do some cleaning:-

Split the data into test and train:-


Check for null values in spam:-

Let's predict our model:-

Check our model accuracy:-

Looks great! with this model the success rate is 98.61%.
I hope with this real world example you can understand how easy is to apply Naive Bayes Classifier.

Meanwhile Friends! Go chase your dreams, have an awesome day, make every second count and see you later in my next post.

Comments

Popular posts from this blog

Detecting Credit Card Fraud As a Data Scientist

Another post starts with you beautiful people! Hope you have learnt something from my previous post about  machine learning classification real world problem Today we will continue our machine learning hands on journey and we will work on an interesting Credit Card Fraud Detection problem. The goal of this exercise is to anonymize credit card transactions labeled as fraudulent or genuine. For your own practice you can download the dataset from here-  Download the dataset! About the dataset:  The datasets contains transactions made by credit cards in September 2013 by european cardholders. This dataset presents transactions that occurred in two days, where we have 492 frauds out of 284,807 transactions. The dataset is highly unbalanced, the positive class (frauds) account for 0.172% of all transactions. Let's start our analysis with loading the dataset first:- As per the  official documentation -  features V1, V2, ... V28 are the principal compo...

How to deploy your ML model as Fast API?

Another post starts with you beautiful people! Thank you all for showing so much interests in my last posts about object detection and recognition using YOLOv4. I was very happy to see many aspiring data scientists have learnt from my past three posts about using YOLOv4. Today I am going to share you all a new skill to learn. Most of you have seen my post about  deploying and consuming ML models as Flask API   where we have learnt to deploy and consume a keras model with Flask API  . In this post you are going to learn a new framework-  FastAPI to deploy your model as Rest API. After completing this post you will have a new industry standard skill. What is FastAPI? FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints. It is easy to learn, fast to code and ready for production . Yes, you heard it right! Flask is not meant to be used in production but with FastAPI you can use you...

Learn the fastest way to build data apps

Another post starts with you beautiful people! I hope you have enjoyed and learned something new from my previous three posts about machine learning model deployment. In one post we have learned  How to deploy a model as FastAPI?  I n the second post, we have learned  How to deploy a deep learning model as RestAPI ? and in the third post, we have also learned  How to scale your deep learning model API?   If you are following my blog posts, you have seen how easily you have transit yourselves from aspiring to a mature data scientist. In this new post, I am going to share a new framework-  Streamlit which will help you to easily create a beautiful app with Python only. I will show here how had I used the Streamlit framework to create an app for my YOLOv3 custom model. What is Streamlit? Streamlit’s open-source app framework is the easiest way for data scientists and machine learning engineers to create beautiful, performant apps in only a few hours!...