当前位置:   article > 正文

机器学习实验四:朴素贝叶斯分类_机器学习朴素贝叶斯分类

机器学习朴素贝叶斯分类

一、算法介绍

贝叶斯分类算法是一大类分类算法的总称,贝叶斯分类算法以样本可能属于某类的概率来作为分类依据。朴素贝叶斯分类算法是贝叶斯分类算法中最简单的一种。

首先我先给出一个贝叶斯公式:
在这里插入图片描述
代入实际的意义:在这里插入图片描述
我们要求的是p(类别|特征)。而对于朴素贝叶斯算法,朴素贝叶斯算法是假设各个特征之间相互独立的**这样以来,我们可以将朴素贝叶斯公式写为:
在这里插入图片描述
而对于朴素贝叶斯分类的训练,就是基于训练集 D D D估计 类先验概率 P ( c ) P(c) P(c),并为每个属性估计条件概率 P ( 特 征 i ∣ 类 别 ) P(特征i|类别) P(i),令Dc表示训练集D中第c类样本组合的集合,则类先验概率:(c为类别)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

二、朴素贝叶斯分类的优缺点

优点:
(1) 算法逻辑简单,易于实现
(2)分类过程中时空开销小

缺点:
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。

而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。

三、代码简单实现

使用了西瓜书上的数据集:

色泽	根蒂	敲声	纹理	脐部	触感	好瓜
青绿	蜷缩	浊响	清晰	凹陷	硬滑	是
乌黑	蜷缩	沉闷	清晰	凹陷	硬滑	是
乌黑	蜷缩	浊响	清晰	凹陷	硬滑	是
青绿	蜷缩	沉闷	清晰	凹陷	硬滑	是
浅白	蜷缩	浊响	清晰	凹陷	硬滑	是
青绿	稍蜷	浊响	清晰	稍凹	软粘	是
乌黑	稍蜷	浊响	稍糊	稍凹	软粘	是
乌黑	稍蜷	浊响	清晰	稍凹	硬滑	是
乌黑	稍蜷	沉闷	稍糊	稍凹	硬滑	否
青绿	硬挺	清脆	清晰	平坦	软粘	否
浅白	硬挺	清脆	模糊	平坦	硬滑	否
浅白	蜷缩	浊响	模糊	平坦	软粘	否
青绿	稍蜷	浊响	稍糊	凹陷	硬滑	否
浅白	稍蜷	沉闷	稍糊	凹陷	硬滑	否
乌黑	稍蜷	浊响	清晰	稍凹	软粘	否
浅白	蜷缩	浊响	模糊	平坦	硬滑	否
青绿	蜷缩	沉闷	稍糊	稍凹	硬滑	否

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
#encoding:utf-8

import pandas as pd
import numpy  as np

class NaiveBayes:
    def __init__(self):
        self.model = {
   }#key 为类别名 val 为字典PClass表示该类的该类,PFeature:{}对应对于各个特征的概率
    def calEntropy(self, y): # 计算熵
        valRate = y.value_counts().apply(lambda x : x / y.size) # 频次汇总 得到各个特征对应的概率
        valEntropy = np.inner(valRate, np.log2(valRate)) * -1
        return valEntropy

    def 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号