sklearn中的朴素贝叶斯模型及其应用

1.使用朴素贝叶斯模型对iris数据集进行花分类

尝试使用3种不同类型的朴素贝叶斯:

高斯分布型

多项式型

伯努利型

代码:


from sklearn.datasets import load_iris;
iris = load_iris()

#高斯分布式算法
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()    #建立模型
pred = gnb.fit(iris.data,iris.target)   #模型分类
G_pred = pred.predict(iris.data)  #分类预测
print("高斯分类预测:",G_pred)
print("高斯:",iris.data.shape[0],(iris.target != G_pred).sum())

#多项式分布算法
from sklearn.naive_bayes import MultinomialNB
mal = MultinomialNB()
pred = mal.fit(iris.data,iris.target)
M_pred = pred.predict(iris.data)
print("多项式分类预测:",M_pred)
print("多项式:",iris.data.shape[0],(iris.target != M_pred).sum())

#伯努利分布算法
from sklearn.naive_bayes import BernoulliNB
bl = BernoulliNB()
pred = bl.fit(iris.data,iris.target)
B_pred = pred.predict(iris.data)
print("伯努利分类预测:",B_pred)
print("伯努利:",iris.data.shape[0],(iris.target != B_pred).sum())

运行结果:

 

2.使用sklearn.model_selection.cross_val_score(),对模型进行验证。

代码:

from sklearn.model_selection import cross_val_score
scores = cross_val_score(gnb,iris.data,iris.target,cv=10)
print("高斯分布式精确度:%.3f"%scores.mean())
scores = cross_val_score(mal,iris.data,iris.target,cv=10)
print("多项式分布精确度:%.3f"%scores.mean())
scores = cross_val_score(bl,iris.data,iris.target,cv=10)
print("伯努利分布精确度:%.3f"%scores.mean())

运行结果:

 

posted @ 2018-11-22 09:58  W梨涡浅笑  阅读(199)  评论(0编辑  收藏  举报