从零开始的AI·朴素贝叶斯?拿来吧你(附实例代码)

从零开始的AI系列



前言

本文理论部分基于Peter Harrington的《机器学习实战》一书

朴素贝叶斯算法(Naive Bayesian algorithm) 是应用最为广泛的分类算法之一。 朴素贝叶斯方法是在贝叶斯算法的基础上进行了相应的简化,即假定给定目标值时属性之间相互条件独立。也就是说没有哪个属性变量对于决策结果来说占有着较大的比重,也没有哪个属性变量对于决策结果占有着较小的比重。虽然这个简化方式在一定程度上降低了贝叶斯分类算法的分类效果,但是在实际的应用场景中,极大地简化了贝叶斯方法的复杂性

如果觉得AI学习枯燥,可以选择看一下这个老哥做的网站,趣味性直接拉满>>人工智能教程


一、权衡利弊

  • 优点:在数据较少的情况下仍然有效,可以处理多类别问题
  • 缺点:对于输入数据的准备方式较为敏感
  • 数据类型:标称型数据
  • 应用:文本分类,垃圾邮件的分类,信用评估,钓鱼网站检测

二、整体感知

有两百名学生,情况如下

长裤裙子
1000
5050

从远处又来了一名穿长裤的学生,仅从穿着判断该学生是男是女

首先计算出穿长裤且是男生的概率为100/150=2/3
其次计算出穿长裤且是女生的概率为50/150=1/3
2/3>1/3,因此我们估计该学生为男生

三、理论基础

  • 先验概率:通过已知的数据计算出的概率。如“贝叶死”的发病率是万分之一
  • 后验概率:根据当前已知的信息,去预测,所得出的概率。如某人患有“贝叶死”,患病原因可能是 A、B 或 C。则由于A而患病的概率即后验概率。它是属于条件概率的一种。
  • 贝叶斯理论
    请添加图片描述
    p(c1|x, y) 意义为给定某个由x、y表示的数据点,那么该数据点来自类别c1的概率是多少?
  • 基本思想:先通过样本获取先验概率,再通过贝叶斯的相关公式计算后验概率,比较后验概率,最大的为分类的结果

四、具体实现过程及细节

#读取数据
import pandas as pd
skin=pd.read_csv(r'train.csv')
skin.z.value_counts()
#划分数据集
from sklearn import  model_selection
X_train, X_test, Y_train, Y_test =model_selection.train_test_split(skin.iloc[:,:2],skin.z,test_size=0.25,random_state=1234)
#使用高斯分类器进行预测
from  sklearn import naive_bayes
gnb=naive_bayes.GaussianNB()
gnb.fit(X_train,Y_train)
gnb_pred =gnb.predict(X_test)
pd.Series(gnb_pred).value_counts()
#构造混淆矩阵并得出准确率
from sklearn import metrics
cm=pd.crosstab(gnb_pred,Y_test)
print('准确率为\n',metrics.accuracy_score(Y_test,gnb_pred))


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有理想、有本领、有担当的有志青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值