【机器学习】贝叶斯分类器代码实现(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



目录
相关文章
|
11天前
|
机器学习/深度学习 算法 Python
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
58 7
|
3月前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
68 6
|
10天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
11天前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
19天前
|
机器学习/深度学习 数据可视化 算法
Python与机器学习:使用Scikit-learn进行数据建模
本文介绍如何使用Python和Scikit-learn进行机器学习数据建模。首先,通过鸢尾花数据集演示数据准备、可视化和预处理步骤。接着,构建并评估K近邻(KNN)模型,展示超参数调优方法。最后,比较KNN、随机森林和支持向量机(SVM)等模型的性能,帮助读者掌握基础的机器学习建模技巧,并展望未来结合深度学习框架的发展方向。
45 9
Python与机器学习:使用Scikit-learn进行数据建模
|
17天前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
18天前
|
API 开发工具 Python
【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
本文介绍如何使用Python SDK为中国区微软云(China Azure)中的虚拟机磁盘创建快照。通过Azure Python SDK的Snapshot Class,指定`location`和`creation_data`参数,使用`Copy`选项从现有磁盘创建快照。代码示例展示了如何配置Default Azure Credential,并设置特定于中国区Azure的`base_url`和`credential_scopes`。参考资料包括官方文档和相关API说明。
|
2月前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
87 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
3月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
89 33
|
3月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
61 10

热门文章

最新文章