【机器学习+python(6)】朴素贝叶斯告诉你这样的男生会有女朋友

机器学习分类算法之朴素贝叶斯 目录 朴素贝叶斯 背景介绍 概念及原理 贝叶斯算法 贝叶斯分类器 朴素贝叶斯应用场景 多项式贝叶斯 代码实现 高斯贝叶斯 其他模型尝试 优点缺点、参数总结 每文一语 朴素贝叶斯 背景介绍 20世纪80年代发展起来,最早由Judea Pearl于1986年提出,多用于专家系统,是处理不确定性 知识和推理问题的最流行的方法。 贝叶斯算法基于贝叶斯统计分析的数学原理,是概率论和图论相结合的产物。 朴素贝叶斯模型的泛化能力要比线性分类器(如LogisticRegress... 阅读详情

欢迎关注哈希大数据微信公众号【哈希大数据】


朴素贝叶斯告诉你什么样的男生有女朋友

当迎面走来一个身材高挑、且金发碧眼的小姐姐,在这样的外貌特点下,定会在心中默叹俄罗斯姑娘真好看;

当我们看到天空乌云密布,电闪雷鸣并阵阵狂风,在这样的天气特征下,我们会推断大概是要下雨了;

基于一些特定的条件或特征,大多数人都会产生一个共同的反应。而这正是朴素贝叶斯(Naive Bayesian)最核心的理念。因此本节我们将重点介绍朴素贝叶斯算法的基本原理和实际应用,来帮我们判断什么类型的男生会有女朋友。

1.朴素贝叶斯基本原理

概念介绍

朴素贝叶斯(Naive Bayesian)是基于贝叶斯定理、条件概率、特征独立分布的分类方法,它通过样本特征计算分类的概率,根据概率大小确定分类的结果。因此它是基于概率论的一种机器学习分类方法。其分类的目标是事先给定的,所以是属于监督学习的一种。

通俗的讲,就是在给定数据集的前提下,对于新的样本,需要在数据集中找寻特征相同的样本,并且计算已有的这些相似的样本分别属于哪一类。比较得出概率最大的为A类型则判断新的这个样本属于类型A。

数学模型

贝叶斯定理,对一个分类问题,给定样本特征x,样本属于类别y的概率是:

image

在这里,x 是一个特征向量,设 x 维度为 M。因为假设不同特征之间是相互独立,互不影响的。因此根据全概率公式,可以得出完整的概率公式:表示当属性为x时,样本属于类型ck的概率。

image

我们已知p(x)对于数据集中的所有类型而言是一个常数,因此只需要进一步最大化分子就能得出最终结果。也就是分别估计出,特征 Χi 在每一类的条件概率就可以了。类别 y 的先验概率p(y=ck)可以通过训练集算出,同样通过对训练集训练,即可获得对应每一类特征的条件概率。

算法特征

优点:在数据较少的情况下仍然有效,而且可以处理多类别问题,分类效率稳定。

缺点:要求各个属性之间必须相互独立。

2 男生特征数据集分析

训练数据

终于来到正题咯,一共收集了168条男生的专业、身高为属性的训练数据集。其中是否有女朋友为类别,1代表有女朋友,0代表还是single dog。

image

获取该数据集

    def getTrainSet(self):        # 获取数据集        trainSet = pd.read_csv('../data/naivebayes_data.csv')        # 转换数据类型        trainSetNP = np.array(trainSet)        # 获取男生的特征属性专业和身高        trainData = trainSetNP[:,0:trainSetNP.shape[1]-1]           # 获取是否有女朋友,0表示没有1表示有        labels = trainSetNP[:,trainSetNP.shape[1]-1]                  return trainData, labels

测试数据

朴素贝叶斯算法的特征要求都是离散值,如果是连续值,得先对连续值进行离散化处理。贝叶斯算法只能对训练集中已有的数据属性进行分类预测,因此我们建立九个测试数据集。

features_all = [['art','short'],['art','medium'],['art','tall'],['computer','short'],['computer','medium'],['computer','tall'],['mathematica','short'],['mathematica','medium'],['mathematica','tall'],]

3 python实现朴素贝叶斯分类

    def naive_bayes(self, trainData, labels, features):        labels = list(labels)    #转换为list类型        # 计算先验概率        P_y = {}        for label in labels:            P_y[label] = (labels.count(label) + self.A) / float(len(labels) + self.K*self.A)        # 计算条件概率        P = {}        for y in P_y.keys():            # 区分不同的分类,此数据中分为0,1两类            y_index = [i for i, label in enumerate(labels) if label == y]            # 计算每种类型出现的次数            y_count = labels.count(y)            for j in range(len(features)):                pkey = str(features[j]) + '|' + str(y)                # 区分不同属性集,专业和身高的一一对应                x_index = [i for i, x in enumerate(trainData[:,j]) if x == features[j]]                # 计算特征x和对应的类别出现的次数                xy_count = len(set(x_index) & set(y_index))                # 计算条件概率                P[pkey] = (xy_count + self.A) / float(y_count + self.S*self.A)        #features所属类        F = {}        for y in P_y.keys():            F[y] = P_y[y]            for x in features:                F[y] = F[y] * P[str(x)+'|'+str(y)]        # 得到概率最大的类别        features_y = max(F, key=F.get)        return features_y

呐分类结果:请自行体会

朴素贝叶斯算法python底层代码 从底层实现了朴素贝叶斯分类代码,适用于各种分类数据:数值/字符、连续/离散 立即下载

相关推荐

用身高和体重数据进行性别分类的实验报告

matlab Parzen窗法估计概率密度函数,得出贝叶斯分类器 用Fisher线性判别方法求分类器 留一法估计错误率

贝叶斯算法

1. 贝叶斯由来 贝叶斯为了解决“逆概”问题提出的 2. 贝叶斯要解决的问题 正向概率 袋子里装着N个黑球和M个白球,伸手取摸球,摸到黑球和白球的概率有多大 逆向概率 袋子里前提不知道有黑白球的比例,而是闭着眼睛摸球统计后推测黑球和白球的比例 3. why贝叶斯 现实世界本身不确定,人类观察是有局限的 我们日常所观察只是表面,很多东西都是推测。 4. 贝叶斯举例 男生总是穿长裤,女生...

qq_35222729的博客 481

贝叶斯分类算法python实现

贝叶斯分类算法是统计学的一种分类算法,利用概率统计对数据进行分类,含数据集,Python实现贝叶斯分类算法

性别预测--再谈贝叶斯【原创】

作者:alert or einyboy 摘要:贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本文通过对男,女姓名集进行训练,利用贝叶斯分类器实现对给定姓名的姓名识别。   一、  问题提出 请问“张飞、赵云、关羽”是男是女的?“西施、貂

huandaohack的专栏 2174

平凡而神奇的贝叶斯定理

数学之美:平凡而神奇的贝叶斯定理;概率论只不过是把常识用数学公式表达了出来。

贝叶斯性别预测

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。本文通过对男,女姓名集进行训练,利用贝叶斯分类器实现对给定姓名的姓名识别。

一文轻松get朴素贝叶斯算法,以及女朋友

作者 | 忆臻来源 |  深度学习这件小事【人工智能头条导读】朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法,是经典的机器学习算法之一,处理很多问题时直接又高效...

优快云人工智能头条 937

【近源攻击】badusb制作

BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。HID(Human InterfaceDevice)设备通常指的就是键盘鼠标等与人交互的设备,用户插入BadUSB,就会自动执行预置在固件中的恶意代码。BadUsb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。

qinjilll的博客 2550

基于python的贝叶斯分类算法预测_python机器学习:朴素贝叶斯分类算法

大数据挖掘DT机器学习 公众号:datayx贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。这篇文章我尽可能用直白的话语总结一下。1分类问题综述对于分类问题,其实谁都不会陌生,日常生活中我们每天都进行着分类过程。例如,当你看到一个人,你的脑子下意识判断他是学生还是社会上的人;你可能经常会走在路上...

weixin_33258222的博客 1366

科研人必备!用WisPaper搭建个人文献知识库的完整指南(附Zotero联动技巧)

本文详细介绍了如何利用WisPaper搭建高效的个人文献知识库,包括文件命名标准化、文件夹结构设计、语义搜索技巧及与Zotero的深度联动方法。通过智能标签系统和知识图谱功能,科研人员可以快速定位关键文献,提升研究效率。特别适合需要管理大量学术文献的研究者。

weixin_30823001的博客 267

Dia 使用说明

简述 在linux上面能找到dia这个工具还是挺幸运的,因为之前画流程图总是使用ubuntu默认的word工具 在里面画图,感觉流程图使用起来麻烦,并且视觉效果真的不好看。 自从使用Dia后,感觉至少画起来流程图会变得越来越标准了。但是Dia也存在问题,就是使用的文档很少,使用中遇到为后,查起来比较费劲,但是至少问题不是很多,所以使用中遇到的几点问题我就记下来,和大家分享,加快大家的开发和文档整理能力。 我会按照遇到的问题来说,不存在使用的先后顺序。 1. Dia 去掉背景中的线条 首先去点那个大一点的蓝色

linan101的博客 4926

机器学习之朴素贝叶斯算法

引言: 很多机器学习算法都从误差角度来构建模型函数f,也就是减少损失函数。而贝叶斯算法则是从概率的角度来考虑。贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。 1 分类问题综述 对于分类问题,其实谁都不会陌生,日常生活中我们每天都进行着分类过程。例如,当你看到一个人,你的脑子...

HPU_FRDHR的博客 479

【Dify精讲】第2章:后端服务架构深度剖析

Dify后端采用Flask应用工厂模式实现模块化开发,通过蓝图架构将API分为控制台、Web应用和服务接口三大模块。其设计亮点包括:1) 应用工厂模式支持多环境配置和独立测试;2) 蓝图分层管理实现API模块化,各模块职责清晰;3) 严格遵循RESTful原则设计API接口;4) 使用Flask-RESTful扩展简化API开发。这种架构既保持了Flask的灵活性,又实现了企业级应用的可维护性,是Flask项目架构的优秀实践案例。

wiyi9891的专栏 2126

机器学习 朴素贝叶斯分类

1. 介绍 朴素贝叶斯分类的思想是求出数据实例属于每个类型的概率,通过比较求出最大概率的类别。那么怎么求出数据实例属于某个类别的概率呢?这里就用到了贝叶斯公式及其变形:

李乾文的博客 660

ubuntu-emto-cpa 测试和使用(单核运行)

ubuntu-emto-cpa 测试和使用(单核运行)

qq_45834835的博客 1400

Python 爬虫实战:深入同花顺,抓取股票行情数据,助力投资决策

通过本次 Python 爬虫实战,我们成功地从同花顺抓取了股票行情数据,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分股票的数据,且未对股票的历史行情进行深入分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多股票的数据,并深入分析股票的历史行情走势、技术指标等,为投资者提供更有价值的数据支持。

u014481728的博客 5334

机器学习-分类模型-朴素贝叶斯分类(3)

理解贝叶斯分类的原理和代码实现

qq_51724097的博客 455

生物量预测:基于Swin-Unet模型的生物量模型预测

本文提出了一种基于Swin-Unet架构的多源遥感地上生物量(AGB)预测方法。该方法整合了光学影像、SAR雷达影像、气候环境参数以及地形数据(坡度和坡向)等多源信息,通过24个输入通道(13+2+7+1+1)构建预测模型。研究采用Min-Max归一化预处理数据,并使用80%训练集、16%验证集和20%测试集的划分策略。模型基于Swin-Unet 2D架构,设置64个初始滤波器、4层深度、4×4堆叠数和2×2补丁大小。该方法通过整合多源遥感数据和先进深度学习架构,为AGB反演提供了新的解决方案。

此星光明博客 61

python机器学习:朴素贝叶斯分类算法

向AI转型的程序员都关注了这个号????????????大数据挖掘DT机器学习 公众号:datayx贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而...

datayx的文章 3270

fasterlio原理及代码框架梳理

Faster-LIO 的优势是在保持同等高精度的前提下,显著提升计算效率,以支持更极端的应用场景(如高速无人机)和更廉价的硬件平台。可以把 Faster-LIO 理解为用一把更快的“空间哈希筛子”(iVox)替换了原来精细的“动态平衡树”(ikd-Tree),从而在精度损失极小的情况下,实现了效率的显著提升。:只在实际有地图点的空间区域动态创建和保留体素单元,形成一个稀疏的体素地图。是关键:将去畸变点云中的每个点,在 iVox 维护的局部地图中搜索近邻(如5个最近点),构建点到面的距离残差。

Studying…… 246

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

9-朴素贝叶斯

tags: python,机器学习,朴素贝叶斯 文章目录朴素贝叶斯定义三种贝叶斯模型高斯分布朴素贝叶斯多项式分布朴素贝叶斯伯努利分布朴素贝叶斯文本分类实践文本的向量化 朴素贝叶斯定义 优点: 朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率; 对小规模的数据表现很好; 能处理多分类任务,适合增量式训练; 对缺失数据不太敏感,算法也比较简单,常用于文本分类 缺点: ...

g11023225的博客 523

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

朴素贝叶斯

转 带你搞懂朴素贝叶斯分类算法 2017年04月14日 16:19:33 算法学习者 阅读数:121482 带你搞懂朴素贝叶斯分类算法 ...

邹亮的博客 187

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python朴素贝叶斯实现-2

本文主要内容:1. 朴素贝叶斯为何需要特征条件独立2. 朴素贝叶斯三种模型: 特征是离散的时候,使用多项式模型 特征是连续变量的时候,应该采用高斯模型 特征的取值只能是1和0伯努利模型) 3. 多项式模型的python实现 朴素贝叶斯 (naive Bayes) 法是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;

常思考->有目标->重实践->善反思 1767

python决策树怎么选择_【机器学习+python(8)】分类决策树的介绍与实现

之前我们介绍过用逻辑回归根据鸢尾花萼片、花瓣的长度和宽度进行鸢尾花类别的判定;也通过朴素贝叶斯模型分享了如何根据男生专业和身高两大属性,判断其是否有女朋友。而本期我们将介绍另外一种有监督的机器学习分类模型----决策树(也可以实现基本的回归),重点介绍决策树的基本原理和实现,并且借助python的sklearn库中的决策树算法实现上述两类数据分类展示。决策树的基本原理想必大家都有疑问,好多机器学习...

weixin_34138192的博客 336

模式识别和机器学习实战- 朴素贝叶斯分类 - Python实现 - 实战之文档分类和过滤垃圾邮件

模式识别和机器学习实战 - 朴素贝叶斯分类 - Python实现 - 实战之文档分类和过滤垃圾邮件

LeoEdwin的博客 3522

《机器学习实战》第四章基于概率论的朴素贝叶斯

《机器学习实战》 第四章.基于概率论的分类方法朴素贝叶斯 4.1朴素贝叶斯名词概念解释 贝叶斯决策论:是概率框架下实施决策的基本方法。在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。 词向量:将语言数学化,一种最简单的词向量方式是 one-hot representation,就是用一个很长的向量来表示一个词,向量的长度为词典的大小,向量的

yuanxun4683的博客 976
上一篇: 【python+机器学习(5)】
下一篇: 【机器学习+python(7)】手动获取随机数据
哈希大数据
博客等级 码龄9年 331粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值