《机器学习实战》学习笔记(五) : sklearn中关于朴素贝叶斯的用法

Table of Contents

朴素贝叶斯的分类

在sklearn中,一共有3个朴素贝叶斯的分类算法,分别是GaussianNB,MultinomialNB和BernoulliNB

GaussianNB

GaussianNB就是先验为高斯分布(正态分布)的朴素贝叶斯,假设每个标签的数据都服从简单的正态分布。
P ( X j = x j ∣ Y = C k ) = 1 2 π σ k 2 e x p ( − ( x j − μ k ) 2 2 σ k 2 ) P(X_j=x_j|Y=C_k)=\frac{1}{\sqrt{2\pi\sigma^2_k}}exp\left(-\frac{(x_j-\mu_k)^2}{2\sigma^2_k}\right) P(Xj=xjY=Ck)=2πσk2 1exp(2σk2(xjμk)2)
其中 C k C_k Ck为Y的第k类类别, μ k \mu_k μk σ k 2 \sigma^2_k σk2为需要从训练集估计的值

理解起来可能有点抽象,那我们从朴素贝叶斯的原理说起:
P ( 类 别 ∣ 特 征 ) = P ( 特 征 ∣ 类 别 ) P ( 类 别 ) P ( 特 征 ) P(类别|特征)=\frac{P(特征|类别)P(类别)}{P(特征)} P()=P()P()P()

我们需要计算在给定的特征下,每种类别的概率值的大小,即等号左边的P(类别|特征),选取其中概率最大的类别,即为最终的判断结果。
为了求的等号左边的P(类别|特征),我们需要计算等号右边的分式。
对于这个分式,每个类别在计算的时候,对应的分母都是一样的,而且我们只是想要比大小,所以只需要计算出每个类别的情况下,分子的大小
P(类别)计算很简单,就是这个类别的样本数/总样本数
P(特征|类别)的计算,我们之前采用的是数数的方法,数一下,在这个类别下,这个标签所占的比例是多少。这对于离散型的变量是比较容易的数的,但是对于连续性的变量来说,就不现实了。所以,对于连续性变量,我们可以通过高斯公式计算出P(特征|类别)

以鸢尾花数据集为例,理解GaussianNB

鸢尾花数据集给出了每朵花的特征,以及花的类别,下面来导入鸢尾花数据集

import numpy as np
import pandas as pd
dataSet = pd.read_csv('iris.txt',header=None)
dataSet.columns=['feature0','feature1','feature2','feature3','label']
dataSet.head(3)
feature0 feature1 feature2 feature3 label
0 5.1 3.5 1.4 0.2 Iris-setosa
1 4.9 3.0 1.4 0.2 Iris-setosa
2 4.7 3.2 1.3 0.2 Iris-setosa

可以看出鸢尾花数据集一共有4个特征,最后一列是标签列

dataSet.iloc[:,-1].unique()
array(['Iris-setosa', 'Iris-versicolor', 'Iris-virginica'], dtype=object)

可以看出,鸢尾花数据集的标签一共是3种,代表三种鸢尾花

那么测试集就是给出一朵花的4个特征,判断是属于哪类鸢尾花
假如我们的测试集是test = [4.2 , 4.5 , 1.2 , 0.5]
如果我们想通过GaussianNB来判断结果的话,我们需要分别计算在给定特征的情况下,是每种标签的可能性,即:

  • P(‘Iris-setosa’|[4.2 , 4.5 , 1.2 , 0.5])
  • P(‘Iris-versicolor’|[4.2 , 4.5 , 1.2 , 0.5] )
  • P(‘Iris-virginica’|[4.2 , 4.5 , 1.2 , 0.5] )

进一步展开的话
P ( ′ I r i s − s e t o s a ′ ∣ [ 4.2 , 4.5 , 1.2 , 0.5 ] ) = P ( [ 4.2 , 4.5 , 1.2 , 0.5 ] ∣ ′ I r i s − s e t o s a ′ ) P ( ′ I r i s − s e t o s a ′ ) P [ 4.2 , 4.5 , 1.2 , 0.5 ] P('Iris-setosa'|[4.2 , 4.5 , 1.2 , 0.5]) = \frac{P([4.2 , 4.5 , 1.2 , 0.5]|'Iris-setosa')P('Iris-setosa')}{P[4.2 , 4.5 , 1.2 , 0.5]} P(Irissetosa[4.2,4.5,1.2,0.5])=P[4.2,4.5,1.2,0.5]P([4.2,4.5,1.2,0.5]Irissetosa)P(Irissetosa)
P ( ′ I r i s − v e r s i c o l o r ′ ∣ [ 4.2 , 4.5 , 1.2 , 0.5 ] ) = P ( [ 4.2 , 4.5 , 1.2 , 0.5 ] ∣ ′ I r i s − v e r s i c o l o r ′ ) P ( ′ I r i s − v e r s i c o l o r ′ ) P [ 4.2 , 4.5 , 1.2 , 0.5 ] P('Iris-versicolor'|[4.2 , 4.5 , 1.2 , 0.5]) = \frac{P([4.2 , 4.5 , 1.2 , 0.5]|'Iris-versicolor')P('Iris-versicolor')}{P[4.2 , 4.5 , 1.2 , 0.5]} P(Irisversicolor[4.2,4.5,1.2,0.5])=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值