Part3__机器学习实战学习笔记__朴素贝叶斯

简介: 本文首先对朴素贝叶斯算法原理进行简要的介绍,然后在iris数据集上面测试算法的效果。

step by step

1、朴素贝叶斯原理介绍
2、iris数据集测试
3、算法优缺点总结


一、朴素贝叶斯原理介绍
朴素贝叶斯是一种构建分类器的简单方法。该分类器模型会给问题实例分配用特征值表示的类标签,类标签取自有限集合。它不是训练这种分类器的单一算法,而是一系列基于相同原理的算法:所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关。举个例子,如果一种水果其具有红,圆,直径大概3英寸等特征,该水果可以被判定为是苹果。尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为这些属性在判定该水果是否为苹果的概率分布上独立的。
对于某些类型的概率模型,在监督式学习的样本集中能获取得非常好的分类效果。在许多实际应用中,朴素贝叶斯模型参数估计使用最大似然估计方法;换而言之,在不用到贝叶斯概率或者任何贝叶斯模型的情况下,朴素贝叶斯模型也能奏效。

图片.png

二、iris数据集测试
  • 2.1 Code Sample
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB, GaussianNB, BernoulliNB, ComplementNB

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

gnb = GaussianNB()
mnb = MultinomialNB()
bnb = BernoulliNB()
cnb = ComplementNB()

gnb_y_pred = gnb.fit(X_train, y_train).predict(X_test)
mnb_y_pred = mnb.fit(X_train, y_train).predict(X_test)
bnb_y_pred = bnb.fit(X_train, y_train).predict(X_test)
cnb_y_pred = cnb.fit(X_train, y_train).predict(X_test)

for model in [gnb_y_pred,mnb_y_pred,bnb_y_pred,cnb_y_pred]:
    print("Number of mislabeled points out of a total %d points : %d" % (X_test.shape[0], (y_test != model).sum()))
  • The Result
Number of mislabeled points out of a total 45 points : 0
Number of mislabeled points out of a total 45 points : 18
Number of mislabeled points out of a total 45 points : 34
Number of mislabeled points out of a total 45 points : 18
  • 2.2 Code Sample(使用OneHot编码预处理样本数据)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB, GaussianNB, BernoulliNB, ComplementNB
from sklearn import preprocessing
enc = preprocessing.OneHotEncoder()
from sklearn.datasets import load_iris
X,y = load_iris().data,load_iris().target
enc.fit(X)
array = enc.transform(X).toarray()
X_train, X_test, y_train, y_test = train_test_split(array, y, test_size=0.3, random_state=0)

gnb = GaussianNB()
mnb = MultinomialNB()
bnb = BernoulliNB()
cnb = ComplementNB()

gnb_y_pred = gnb.fit(X_train, y_train).predict(X_test)
mnb_y_pred = mnb.fit(X_train, y_train).predict(X_test)
bnb_y_pred = bnb.fit(X_train, y_train).predict(X_test)
cnb_y_pred = cnb.fit(X_train, y_train).predict(X_test)

for model in [gnb_y_pred,mnb_y_pred,bnb_y_pred,cnb_y_pred]:
    print("Number of mislabeled points out of a total %d points : %d" % (X_test.shape[0], (y_test != model).sum()))
  • The Result
Number of mislabeled points out of a total 45 points : 4
Number of mislabeled points out of a total 45 points : 4
Number of mislabeled points out of a total 45 points : 3
Number of mislabeled points out of a total 45 points : 3
使用OneHot对样本预处理之后,除了MultinomialNB精度有一定下降,其它三个算法均有显著提升。
三、算法优缺点总结

优点:

  • 朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。
  • 对大数量训练和查询时具有较高的速度。即使使用超大规模的训练集,针对每个项目通常也只会有相对较少的特征数,并且对项目的训练和分类也仅仅是特征概率的数学运算而已;
  • 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练(即可以实时的对新增的样本进行训练);
  • 对缺失数据不太敏感,算法也比较简单,常用于文本分类;
  • 朴素贝叶斯对结果解释容易理解。

缺点:

  • 需要计算先验概率;
  • 分类决策存在错误率;
  • 对输入数据的表达形式很敏感;
  • 由于使用了样本属性独立性的假设,所以如果样本属性有关联时其效果不好。

更多参考

朴素贝叶斯分类器
机器学习实战教程(五):朴素贝叶斯实战篇之新浪新闻分类

相关文章
|
5月前
|
机器学习/深度学习 存储 运维
机器学习异常检测实战:用Isolation Forest快速构建无标签异常检测系统
本研究通过实验演示了异常标记如何逐步完善异常检测方案和主要分类模型在欺诈检测中的应用。实验结果表明,Isolation Forest作为一个强大的异常检测模型,无需显式建模正常模式即可有效工作,在处理未见风险事件方面具有显著优势。
377 46
|
8月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
8月前
|
机器学习/深度学习 人工智能 Java
Java机器学习实战:基于DJL框架的手写数字识别全解析
在人工智能蓬勃发展的今天,Python凭借丰富的生态库(如TensorFlow、PyTorch)成为AI开发的首选语言。但Java作为企业级应用的基石,其在生产环境部署、性能优化和工程化方面的优势不容忽视。DJL(Deep Java Library)的出现完美填补了Java在深度学习领域的空白,它提供了一套统一的API,允许开发者无缝对接主流深度学习框架,将AI模型高效部署到Java生态中。本文将通过手写数字识别的完整流程,深入解析DJL框架的核心机制与应用实践。
461 3
|
8月前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。
|
9月前
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
R1类模型推理能力评测手把手实战
234 2
|
9月前
|
人工智能 自然语言处理 网络安全
基于阿里云 Milvus + DeepSeek + PAI LangStudio 的低成本高精度 RAG 实战
阿里云向量检索服务Milvus版是一款全托管向量检索引擎,并确保与开源Milvus的完全兼容性,支持无缝迁移。它在开源版本的基础上增强了可扩展性,能提供大规模AI向量数据的相似性检索服务。凭借其开箱即用的特性、灵活的扩展能力和全链路监控告警,Milvus云服务成为多样化AI应用场景的理想选择,包括多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等。您还可以利用开源的Attu工具进行可视化操作,进一步促进应用的快速开发和部署。
|
9月前
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
随着DeepSeek-R1模型的广泛应用,越来越多的开发者开始尝试复现类似的模型,以提升其推理能力。
686 2
|
9月前
|
数据可视化 API 开发者
R1类模型推理能力评测手把手实战
随着DeepSeek-R1模型的广泛应用,越来越多的开发者开始尝试复现类似的模型,以提升其推理能力。
577 3
|
12月前
|
机器学习/深度学习 人工智能 TensorFlow
基于TensorFlow的深度学习模型训练与优化实战
基于TensorFlow的深度学习模型训练与优化实战
511 3
|
12月前
|
机器学习/深度学习 数据采集 人工智能
机器学习入门:Python与scikit-learn实战
机器学习入门:Python与scikit-learn实战
405 0

热门文章

最新文章