赞
踩
贝叶斯分类算法是一大类分类算法的总称,贝叶斯分类算法以样本可能属于某类的概率来作为分类依据。朴素贝叶斯分类算法是贝叶斯分类算法中最简单的一种。
首先我先给出一个贝叶斯公式:
代入实际的意义:
我们要求的是p(类别|特征)。而对于朴素贝叶斯算法,朴素贝叶斯算法是假设各个特征之间相互独立的**这样以来,我们可以将朴素贝叶斯公式写为:
而对于朴素贝叶斯分类的训练,就是基于训练集 D D D估计 类先验概率 P ( c ) P(c) P(c),并为每个属性估计条件概率 P ( 特 征 i ∣ 类 别 ) P(特征i|类别) P(特征i∣类别),令Dc表示训练集D中第c类样本组合的集合,则类先验概率:(c为类别)
优点:
(1) 算法逻辑简单,易于实现
(2)分类过程中时空开销小
缺点:
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
使用了西瓜书上的数据集:
色泽 根蒂 敲声 纹理 脐部 触感 好瓜 青绿 蜷缩 浊响 清晰 凹陷 硬滑 是 乌黑 蜷缩 沉闷 清晰 凹陷 硬滑 是 乌黑 蜷缩 浊响 清晰 凹陷 硬滑 是 青绿 蜷缩 沉闷 清晰 凹陷 硬滑 是 浅白 蜷缩 浊响 清晰 凹陷 硬滑 是 青绿 稍蜷 浊响 清晰 稍凹 软粘 是 乌黑 稍蜷 浊响 稍糊 稍凹 软粘 是 乌黑 稍蜷 浊响 清晰 稍凹 硬滑 是 乌黑 稍蜷 沉闷 稍糊 稍凹 硬滑 否 青绿 硬挺 清脆 清晰 平坦 软粘 否 浅白 硬挺 清脆 模糊 平坦 硬滑 否 浅白 蜷缩 浊响 模糊 平坦 软粘 否 青绿 稍蜷 浊响 稍糊 凹陷 硬滑 否 浅白 稍蜷 沉闷 稍糊 凹陷 硬滑 否 乌黑 稍蜷 浊响 清晰 稍凹 软粘 否 浅白 蜷缩 浊响 模糊 平坦 硬滑 否 青绿 蜷缩 沉闷 稍糊 稍凹 硬滑 否
#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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。