sklearn-朴素贝叶斯
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sklearn-朴素贝叶斯相关的知识,希望对你有一定的参考价值。
参考技术A 朴素贝叶斯分为三种:高斯朴素贝叶斯、多项式朴素贝叶斯、伯努利朴素贝叶斯。这三种的不同之处在于求条件概率的公式不同。高斯朴素贝叶斯
Gaussian Naive Bayes (GaussianNB)(1.9.1)
参数:
priors : array-like, shape (n_classes,),先验概率,如果设置了先验概率则不会根据数据调整。
属性:
1、class_prior_ : array, shape (n_classes,),每个类别的概率。
2、class_count_ : array, shape (n_classes,),每个类别观察训练样本的数量。
3、theta_ : array, shape (n_classes, n_features),每个类别每个特征的平均值。
4、sigma_ : array, shape (n_classes, n_features),每个类别每个特征的方差。
方法:
1、fit(X, y[, sample_weight]),拟合。
2、get_params([deep]),得到参数。
3、partial_fit(X, y[, classes, sample_weight]),部分样本上的增量拟合。
4、predict(X),预测。
5、predict_log_proba(X),返回测试向量X的对数概率估计。
6、predict_proba(X),返回测试向量X的概率估计。
7、score(X, y[, sample_weight]),返回给定测试数据和label的平均精度。
8、set_params(**params),设定参数。
多项式朴素贝叶斯
Naive Bayes classifier for multinomial models(MultinomialNB,1.9.2)
参数:
1、alpha : float, optional (default=1.0),加性(Laplace/Lidstone)平滑参数(0不平滑)。
2、fit_prior : boolean, optional (default=True),是否要学习类别的先验概率。如果是False,将使用统一的先验概率。
3、class_prior : array-like, size (n_classes,), optional (default=None),类的先验概率。如果指定了先验信息,则不会根据数据进行调整。
属性:
1、class_log_prior_ : array, shape (n_classes, ),每个类的平滑的经验对数概率。
2、intercept_ : property,将多项式朴素贝叶斯理解为线性模型时,class_log_prior_的镜像。
3、feature_log_prob_ : array, shape (n_classes, n_features),给定类别的特征值的经验对数概率,P(x_i|y)。
4、coef_ : property,将多项式朴素贝叶斯理解为线性模型时,feature_log_prob_的镜像。
5、class_count_ : array, shape (n_classes,),在拟合的过程中每个类所遇到的样本数。给定这个值的时候由样本权重加权。
6、feature_count_ : array, shape (n_classes, n_features),在拟合的过程中每个(class, feature)所遇到的样本数。给定这个值的时候由样本权重加权。
方法:
1、fit(X, y[, sample_weight]),拟合
2、get_params([deep]),得到参数
3、partial_fit(X, y[, classes, sample_weight]),部分样本上的增量拟合。
4、predict(X),预测
5、predict_log_proba(X),返回测试向量X的对数概率估计。
6、predict_proba(X),返回测试向量X的概率估计。
7、score(X, y[, sample_weight]),返回给定测试数据和label的平均精度。
8、set_params(**params),设置参数。
伯努利朴素贝叶斯
参数:
1、alpha : float, optional (default=1.0),加性(Laplace/Lidstone)平滑参数(0不平滑)。
2、binarize : float or None, optional (default=0.0),二值化的样本特征阈值(映射到布尔型)。如果为None,输入被认为已经包含了二进制向量。
3、fit_prior : boolean, optional (default=True),是否要学习类别的先验概率。如果是False,将使用统一的先验概率。
4、class_prior : array-like, size (n_classes,), optional (default=None),类的先验概率。如果指定了先验信息,则不会根据数据进行调整。
属性:
1、class_log_prior_ : array, shape (n_classes, ),每个类的平滑的经验对数概率。
2、feature_log_prob_ : array, shape (n_classes, n_features),给定类别的特征值的经验对数概率,P(x_i|y)。
3、class_count_ : array, shape (n_classes,),在拟合的过程中每个类所遇到的样本数。给定这个值的时候由样本权重加权。
4、feature_count_ : array, shape (n_classes, n_features),在拟合的过程中每个(class, feature)所遇到的样本数。给定这个值的时候由样本权重加权。
方法:
和上面一样。
高斯朴素贝叶斯只有一个参数还是设置先验概率,不方便设置,因此,我没有修改,正确率86.07%,也很不错了。
多项式朴素贝叶斯,修改alpha的值,正确率有轻微的上升下降,变化不大。修改fit_prior,正确率,没有变化。
伯努利朴素贝叶斯,修改alpha,有细微的变化。修改二值化binarize,有轻微变化,修改fit_prior,没有变化。
sklearn中的朴素贝叶斯模型及其应用
1.使用朴素贝叶斯模型对iris数据集进行花分类
尝试使用3种不同类型的朴素贝叶斯:
(1)多项式型
from sklearn import datasets iris=datasets.load_iris() from sklearn.model_selection import cross_val_score
from sklearn.naive_bayes import GaussianNB gnb = GaussianNB() pred = gnb.fit(iris.data, iris.target) y_pred = pred.predict(iris.data) print(iris.data.shape[0],(iris.target !=y_pred).sum()
(2)高斯分布型
from sklearn.naive_bayes import GaussianNB gnb1=GaussianNB()#构造建立模型 pred=gnb1.fit(iris.data,iris.target)#模型训练,拟合 y_pred=gnb1.predict(iris.data)#分类预测 print(iris.data.shape[0],(iris.target!=y_pred).sum()) scores=cross_val_score(gnb1,iris.data,iris.target,cv=10) print("Accuracy:%.3f"%scores.mean()) print(y_pred)
(3)伯努利型
from sklearn.naive_bayes import BernoulliNB gnb2=BernoulliNB()#构造 pred=gnb2.fit(iris.data,iris.target)#模型训练,拟合 y_pred=gnb2.predict(iris.data)#分类预测 print(iris.data.shape[0],(iris.target!=y_pred).sum()) scores=cross_val_score(gnb2,iris.data,iris.target,cv=10) print("Accuracy:%.3f"%scores.mean()) print(y_pred)
2.使用sklearn.model_selection.cross_val_score(),对模型进行验证。
以上是关于sklearn-朴素贝叶斯的主要内容,如果未能解决你的问题,请参考以下文章