前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速入门Python机器学习(11)

快速入门Python机器学习(11)

作者头像
顾翔
发布2022-09-23 19:58:51
3900
发布2022-09-23 19:58:51
举报
文章被收录于专栏:啄木鸟软件测试

朴素贝叶斯可以分为贝努利贝叶斯(BernoulliNB)、高斯贝叶斯(GaussianNB)和多项式贝叶斯(MultinomailNB)。贝努利贝叶斯(BernoulliNB)又可以分为二项分布和0-1分布。我们首先来介绍贝努利贝叶斯(BernoulliNB)。

7.3 贝努利贝叶斯(BernoulliNB)

7.3.1 属性与方法

代码语言:javascript
复制
class sklearn.naive_bayes.BernoulliNB(*, alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)

属性

解释

class_count_

ndarray of shape (n_classes)拟合期间遇到的每个类的样本数。

class_log_prior_

ndarray of shape (n_classes)当提供时,该值由样本重量加权。

classes_

ndarray of shape (n_classes,)每类的对数概率(平滑)。

coef_

ndarray of shape (n_classes, n_features)分类器已知的类标签反射镜的特征是把伯努利谱解释为一个线性模型。

feature_count_

ndarray of shape (n_classes, n_features)拟合期间每个(类、特征)遇到的样本数。

feature_log_prob_

ndarray of shape (n_classes, n_features)当提供时,该值由样本重量加权。给定一类特征的经验对数概率P(x|i|y)。

intercept_

ndarray of shape (n_classes,)镜像类logprior,用于将BernoulliNB解释为线性模型。

n_features_

int每个样本的特征数。

方法

fit(X, y[, sample_weight])

根据X,y拟合朴素贝叶斯分类器

get_params([deep])

获取此估计器的参数。

partial_fit(X, y[, classes, sample_weight])

对一批样品进行增量拟合。

predict(X)

对测试向量X的数组执行分类。

predict_log_proba(X)

测试向量X的返回对数概率估计。

predict_proba(X)

测试向量X的返回概率估计。

score(X, y[, sample_weight])

返回给定测试数据和标签的平均精度。

set_params(**params)

设置此估计器的参数。

7.3.2用贝努利贝叶斯make_blobs

代码语言:javascript
复制
def bernoulliNB_for_make_blobs():
       myutil = util()
       X,y = make_blobs(n_samples=500,centers=8, random_state=8)
       X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
       nb = BernoulliNB()
       nb.fit(X,y)
       title = "贝努利贝叶斯 make_blobs"
       myutil.draw_scatter(X,y,nb,title)
       myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
       myutil.plot_learning_curve(BernoulliNB(),X,y,title)
       myutil.show_pic(title)

输出

代码语言:javascript
复制
贝努利贝叶斯 make_blobs:
38.13%
贝努利贝叶斯 make_blobs:
37.60%

用贝努利贝叶斯make_blobs效果不是很好。

7.3.3用贝努利贝叶斯分析鸢尾花数据

代码语言:javascript
复制
def bernoulliNB_for_iris():
       myutil = util()
       X,y = datasets.load_iris().data,datasets.load_iris().target
       X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
       nb = BernoulliNB()
       nb.fit(X,y)
       title = "贝努利贝叶斯 鸢尾花"
       myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
       myutil.plot_learning_curve(BernoulliNB(),X,y,title)
       myutil.show_pic(title)

输出

代码语言:javascript
复制
贝努利贝叶斯 鸢尾花:
33.04%
贝努利贝叶斯 鸢尾花:
34.21%

用贝努利贝叶斯分析鸢尾花数据效果不是很好。

7.3.4用贝努利贝叶斯分析红酒数据

代码语言:javascript
复制
def bernoulliNB_for_wine():
       myutil = util()
       X,y = datasets.load_wine().data,datasets.load_wine().target
       X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
       nb = BernoulliNB()
       nb.fit(X,y)
       title = "贝努利贝叶斯 红酒"
       myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
       myutil.plot_learning_curve(BernoulliNB(),X,y,title)
       myutil.show_pic(title)

输出

代码语言:javascript
复制
贝努利贝叶斯 红酒:
41.35%
贝努利贝叶斯 红酒:
35.56%

用贝努利贝叶斯分析红酒数据效果也不是很好

7.3.5用贝努利贝叶斯分析乳腺癌数据

代码语言:javascript
复制
def bernoulliNB_for_breast_cancer():
       myutil = util()
       X,y = datasets.load_breast_cancer().data,datasets.load_breast_cancer().target
       X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
       nb = BernoulliNB()
       nb.fit(X,y)
       title = "贝努利贝叶斯 乳腺癌"
       myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
       myutil.plot_learning_curve(BernoulliNB(),X,y,title)
       myutil.show_pic(title)

输出

代码语言:javascript
复制
贝努利贝叶斯 乳腺癌:
63.85%
贝努利贝叶斯 乳腺癌:
59.44%

用贝努利贝叶斯分析乳腺癌数据效果仍旧不是很好。

7.4 高斯贝叶斯(GaussianNB)

7.4.1 属性与方法

class sklearn.naive_bayes.GaussianNB(*, priors=None, var_smoothing=1e-09)

属性

属性

解释

class_count_

ndarray of shape (n_classes,)每类观察到的训练样本数。

class_prior_

ndarray of shape (n_classes,)每一类的概率。

classes_

ndarray of shape (n_classes,)分类器已知的类标签

epsilon_

float方差的绝对加和值

sigma_

ndarray of shape (n_classes, n_features)每类特征的方差

theta_

ndarray of shape (n_classes, n_features)每类特征的平均值

方法

fit(X, y[, sample_weight])

根据X,y拟合高斯朴素贝叶斯

get_params([deep])

获取此估计器的参数。

partial_fit(X, y[, classes, sample_weight])

对一批样品进行增量拟合。

predict(X)

对测试向量X的数组执行分类。

predict_log_proba(X)

测试向量X的返回对数概率估计。

predict_proba(X)

测试向量X的返回概率估计。

score(X, y[, sample_weight])

返回给定测试数据和标签的平均精度。

set_params(**params)

设置此估计器的参数。

7.4.2用高斯贝叶斯make_blobs

代码语言:javascript
复制
def bernoulliNB_for_make_blobs():
       myutil = util()
       X,y = make_blobs(n_samples=500,centers=8, random_state=8)
       X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
       nb = GaussianNB ()
       nb.fit(X,y)
       title = "高斯贝叶斯 make_blobs"
       myutil.draw_scatter(X,y,nb,title)
       myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
       myutil.plot_learning_curve(BernoulliNB(),X,y,title)
       myutil.show_pic(title)

输出

代码语言:javascript
复制
高斯贝叶斯 make_blobs:
85.60%
高斯贝叶斯 make_blobs:
92.00%

用高斯贝叶斯make_blobs效果还是不错的。

7.3.3用高斯贝叶斯分析鸢尾花数据

代码语言:javascript
复制
def bernoulliNB_for_iris():
       myutil = util()
       X,y = datasets.load_iris().data,datasets.load_iris().target
       X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
       nb = GaussianNB()
       nb.fit(X,y)
       title = "高斯贝叶斯 鸢尾花"
       myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
       myutil.plot_learning_curve(GaussianNB(),X,y,title)
       myutil.show_pic(title)

输出

代码语言:javascript
复制
高斯贝叶斯 鸢尾花:
98.21%
高斯贝叶斯 鸢尾花:
89.47%

用高斯贝叶斯分析鸢尾花数据效果仍旧很好。

7.3.4用高斯贝叶斯分析红酒数据

代码语言:javascript
复制
def bernoulliNB_for_wine():
       myutil = util()
       X,y = datasets.load_wine().data,datasets.load_wine().target
       X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
       nb = GaussianNB()
       nb.fit(X,y)
       title = "高斯贝叶斯 红酒"
       myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
       myutil.plot_learning_curve(GaussianNB(),X,y,title)
       myutil.show_pic(title)

输出

代码语言:javascript
复制
高斯贝叶斯 红酒:
99.25%
高斯贝叶斯 红酒:
97.78%

用高斯贝叶斯分析红酒数据效果仍旧很好

7.3.5用高斯贝叶斯分析乳腺癌数据

代码语言:javascript
复制
def bernoulliNB_for_breast_cancer():
       myutil = util()
       X,y = datasets.load_breast_cancer().data,datasets.load_breast_cancer().target
       X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8)
       nb = GaussianNB()
       nb.fit(X,y)
       title = "高斯贝叶斯 乳腺癌"
       myutil.print_scores(nb,X_train,y_train,X_test,y_test,title)
       myutil.plot_learning_curve(GaussianNB(),X,y,title)
       myutil.show_pic(title)

输出

代码语言:javascript
复制
高斯贝叶斯 乳腺癌:
94.37%
高斯贝叶斯 乳腺癌:
93.71%

用高斯贝叶斯分析乳腺癌数据效果仍旧很好。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档