Multinomial Naive Bayes Classifier

Multinomial naive Bayes works similar to Gaussian naive Bayes, however the features are assumed to be multinomially distributed. In practice, this means that this classifier is commonly used when we have discrete data (e.g. movie ratings ranging 1 and 5).


# Load libraries
import numpy as np
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer

Create Text Data

# Create text
text_data = np.array(['I love Brazil. Brazil!',
                      'Brazil is best',
                      'Germany beats both'])

Create Bag Of Words

# Create bag of words
count = CountVectorizer()
bag_of_words = count.fit_transform(text_data)

# Create feature matrix
X = bag_of_words.toarray()

Create Target Vector

# Create target vector
y = np.array([0,0,1])

Train Multinomial Naive Bayes Classifier

# Create multinomial naive Bayes object with prior probabilities of each class
clf = MultinomialNB(class_prior=[0.25, 0.5])

# Train model
model =, y)

Create Previously Unseen Observation

# Create new observation
new_observation = [[0, 0, 0, 1, 0, 1, 0]]

Predict Observation’s Class

# Predict new observation's class