Naive Bayes classification is based on Bayes Theorem. Naive Bayes assumes that the features contribute independently to determine the classification of the final outcome.

Naive Bayes is a particularly handy tool you can use to address classification based problems. It can be implemented using the naiveBayes() function in e1071 package or naive.bayes() in bnlearn package.

### How to Implement Naive Bayes?

#### Dealing with Missing Values

In classification based problems, prior to applying the algorithm, it is a good practice to convert the missing values as an additional category, i.e. if you choose to not remove the missing value observations altogether.

# Optional - Convert NA as another factor in your categorical data. for (Var in names (inputData)) { if (any (is.na (inputData[, Var]))) { levels (inputData[, Var]) <- c (levels (inputData[, Var]), "UNKNOWN") # Add 'unknown' level for missing inputData[is.na (inputData[, Var]), Var] <- "UNKNOWN" # replace missing with 'UNKNOWN' } }

#### Apply the Naive Bayes Classification and Predict

`library (bnlearn)`

bn <- naive.bayes (inputData, "responseVarName") # make Bayes model

fitted <- bn.fit (bn, inputData) # fit parameters of Bayes model

pred <- predict (fitted, newData) # predict on new data

table (pred, newData[, "responseVarName"]) # confusion matrix

# sample confusion matrix: Actual vs Predicted pred a b c a 253 55 32 b 44 197 41 c 42 73 263