Package e1071 provides with naiveBayes function. It assumes independence of predictors, and assumes Gaussian distribution for metric predictors.
Its example includes iris sample:
> library(e1071) > data(iris) > head(iris) > head(iris) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa
Our target variable is Species:
> m <- naiveBayes(Species ~ ., iris) > m Naive Bayes Classifier for Discrete Predictors Call: naiveBayes.default(x = X, y = Y, laplace = laplace) A-priori probabilities: Y setosa versicolor virginica 0.3333333 0.3333333 0.3333333 Conditional probabilities: Sepal.Length Y [,1] [,2] setosa 5.006 0.3524897 versicolor 5.936 0.5161711 virginica 6.588 0.6358796 Sepal.Width Y [,1] [,2] setosa 3.428 0.3790644 versicolor 2.770 0.3137983 virginica 2.974 0.3224966 Petal.Length Y [,1] [,2] setosa 1.462 0.1736640 versicolor 4.260 0.4699110 virginica 5.552 0.5518947 Petal.Width Y [,1] [,2] setosa 0.246 0.1053856 versicolor 1.326 0.1977527 virginica 2.026 0.2746501
To see its performance (remember that 5th column is Species):
> table(predict=predict(m, iris[, -5]), true=iris[,5]) true predict setosa versicolor virginica setosa 50 0 0 versicolor 0 47 3 virginica 0 3 47
For prediction, use predict. When type=”raw” is given, probability is printed:
> predict(m, iris[1:10, -5]) [1] setosa setosa setosa setosa setosa setosa setosa setosa setosa setosa Levels: setosa versicolor virginica > predict(m, iris[1:10, -5], type="raw") setosa versicolor virginica [1,] 1 2.981309e-18 2.152373e-25 [2,] 1 3.169312e-17 6.938030e-25 [3,] 1 2.367113e-18 7.240956e-26 [4,] 1 3.069606e-17 8.690636e-25 [5,] 1 1.017337e-18 8.885794e-26 [6,] 1 2.717732e-14 4.344285e-21 [7,] 1 2.321639e-17 7.988271e-25 [8,] 1 1.390751e-17 8.166995e-25 [9,] 1 1.990156e-17 3.606469e-25 [10,] 1 7.378931e-18 3.615492e-25