机器学习(6)--朴素贝叶斯模型算法之鸢尾花数据实验

朴素贝叶斯模型是一种基于贝叶斯定理与特征条件独立假设的分类方法,
是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法。

优点:算法逻辑简单,易于实现
缺点:朴素贝叶斯模型前提是假设属性之间相互独立,但这个在现实中往往是不存在的,当属性过多或属性之间相关性大时效果不太好


网上有非常多的关于朴素贝叶斯模型概率的数理方法,
我不打算在这写这些数理上的东西,仅通过python代码实现并讲解朴素贝叶斯模型实现过程
之所以说算法简单,在下面一大串的代码中真正和朴素贝叶斯模型有关的代码有关的就三句
1、以下两句这句的目的是计算训练集中的样本各属性的平均值与标准差
    mean=clfItems.mean(axis=0)#计算每个属性的平均值
    stdev= np.sqrt(np.sum((clfItems-mean)**2,axis=0)/float(len(clfItems)-1))#计算每个属性的标准差
2、以下这句就是测试集中每条记录在与训练集中进行比对所应用的朴素贝叶斯算法,
        #测试集中每条记录的每个属性在与训练集中进行比对应用的朴素贝叶斯算法,
        probabilities= np.exp(-1*(testItem[0:-1]-trainClfData[clfItem][:,0])**2/(trainClfData[clfItem][:,1]**2*2)) / (np.sqrt(2*np.pi)*trainClfData[clfItem][:,1])
这里应用的是Gaussian Naïve Bayes,高斯NB,
当然还有一些别的算法:如:Multinomial Naïve Bayes,多项式NB、Bernoulli Naïve Bayes,多元贝努利NB等

本例使用数据集简介:以鸢尾花的特征作为数据,共有数据集包含150个数据集,
分为3类setosa(山鸢尾), versicolor(变色鸢尾), virginica(维吉尼亚鸢尾)
每类50个数据,每条数据包含4个属性数据 和 一个类别数据.

通过这150个数据来演示朴素贝叶斯模型实现
这还有两篇文章也是关于鸢尾花的机器学习实验,有兴趣也可以了解一下
机器学习(2)--邻近算法(KNN)
机器学习(3.2)--PCA降维鸢尾花数据降维演示

废话不说,附上全部代码

# -*- coding:utf-8 -*-
#鸢尾花的特征作为数据
data='''5.1,3.5,1.4,0.2,Iris-setosa
        4.9,3.0,1.4,0.2,Iris-setosa
        4.7,3.2,1.3,0.2,Iris-setosa
        4.6,3.1,1.5,0.2,Iris-setosa
        5.0,3.6,1.4,0.2,Iris
  • 10
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值