【机器学习】贝叶斯分类器代码实现(python+sklearn)

简介: 【机器学习】贝叶斯分类器代码实现(python+sklearn)

简 介:下面是我在学习时候的记录并加上自己的理解。本文意在记录自己近期学习过程中的所学所得,如有错误,欢迎大家指正。

 

关键词:Python、机器学习、贝叶斯分类器

一、贝叶斯分类器

sklearn-learn官方封装好的模块中,已经有了BernoulliNB(伯努利分类器)、GaussianNB(高斯分类器)、MultinomialNB(多项式分类器)、ComplementNB(互补贝叶斯分类器)、CategoricalNB。

这些分类器的大体原理是一样的,都是根据先验概率和条件概率去求后验概率,不同之处就是不同的分类器对我们数据的假设分布不一样,比如高斯分类器就是假设每个类别下的每一特征分量符合的是正态分布。

注意目前几个分类器只可以用于分类使用,不能够用于回归建模。

1.高斯分类器代码实现

from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
# 1.加载数据
X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2021)
# 2.定义分类器
clf = GaussianNB()
# 3.模型训练
clf.fit(X_train, y_train)
# print(clf.class_count_)
# print(clf.classes_)
# print(clf.sigma_) 返回每个类别下每个特征分量的均值
# print(clf.theta_) 返回每个类别下每个特征分量的方差
print(X.shape)
print(clf.theta_.shape)
# 4.模型结果
print("训练集分数:", clf.score(X_train, y_train))
print("测试集分数:", clf.score(X_test, y_test))
# 如果我们的数据集较为大时,一次性不能够全部读入内存,此时就可以用partial_fit方法进行分批进行训练
clf.partial_fit(X_train, y_train)
print("训练集分数:", clf.score(X_train, y_train))
print("测试集分数:", clf.score(X_test, y_test))

输出结果:

(1797, 64)
(10, 64)
训练集分数: 0.847255369928401
测试集分数: 0.8444444444444444
训练集分数: 0.847255369928401
测试集分数: 0.8444444444444444

高斯分类器非常简单,因为在构造模型时不需要任何的参数。

上面可能看到partial_fit这个方法,这个方法也是用于训练模型的,它的使用场景就是当我们的训练数据集特别大,cpu不能够一次性的容纳下,此时就需要使用该方法进行分块学习,其实它和深度学习中的批次差不多。

其中模型中有两个重要的参数分别为sigma_,theta_,他们两个分别代表的是每个类别下每个特征分量的均值和方差。

2.多项式分类器

from sklearn.naive_bayes import MultinomialNB
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
# 1.加载数据
X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2021)
# 2.定义分类器
clf = MultinomialNB()
# 3.模型训练
clf.fit(X_train, y_train)
# 4.模型结果
print("训练集分数:", clf.score(X_train, y_train))
print("测试集分数:", clf.score(X_test, y_test))
# 如果我们的数据集较为大时,一次性不能够全部读入内存,此时就可以用partial_fit方法进行分批进行训练
clf.partial_fit(X_train, y_train)
print("训练集分数:", clf.score(X_train, y_train))
print("测试集分数:", clf.score(X_test, y_test))

输出结果:

训练集分数: 0.9085123309466985
测试集分数: 0.9092592592592592
训练集分数: 0.9085123309466985
测试集分数: 0.9092592592592592



目录
相关文章
|
3月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
193 26
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
344 1
|
3月前
|
机器学习/深度学习 算法 调度
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
190 1
|
2月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
242 100
|
2月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
400 95
|
3月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
246 104
|
3月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
447 99
|
2月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
153 88
|
3月前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
275 102
|
2月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。

热门文章

最新文章

推荐镜像

更多