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())
运行结果: