1. scikit-learn 朴素贝叶斯类库概述
朴素贝叶斯是一类比较简单的算法,scikit-learn中朴素贝叶斯类库的使用也比较简单。相对于决策树,KNN之类的算法,朴素贝叶斯需要关注的参数是比较少的,这样也比较容易掌握。在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。分别是GaussianNB,MultinomialNB和BernoulliNB。其中GaussianNB就是条件概率为高斯分布的朴素贝叶斯,MultinomialNB就是条件概率为多项式分布的朴素贝叶斯,而BernoulliNB就是条件概率为伯努利分布的朴素贝叶斯。
这三个类适用的分类场景各不相同,一般来说,如果样本特征的分布大部分是连续值,使用GaussianNB会比较好。如果如果样本特征的分大部分是多元离散值,使用MultinomialNB比较合适。而如果样本特征是二元离散值或者很稀疏的多元离散值,应该使用BernoulliNB。
import numpy as np X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) Y = np.array([1, 1, 1, 2, 2, 2]) from sklearn.naive_bayes import GaussianNB clf = GaussianNB() #拟合数据 clf.fit(X, Y) print "==Predict result by predict==" print(clf.predict([[-0.8, -1]])) print "==Predict result by predict_proba==" print(clf.predict_proba([[-0.8, -1]])) print "==Predict result by predict_log_proba==" print(clf.predict_log_proba([[-0.8, -1]]))