机器学习之朴素贝叶斯算法(python仿真)

一、朴素贝叶斯的优缺点

优点:

  • 能够简单快捷地进行预测。
  • 当独立假设成立时,朴素贝叶斯比其他模型相比性能更好,所需数据也更少。
  • 与数值变量相比,分类输入变量的情况下该模型性能更好。

缺点:

  • 对于分类输入变量来说,如果在训练样本中未出现,那么该模型认为该变量出现概率为0,并且不能作出预测。
  • 我们可以用拉普拉斯平滑来解决这个问题。
  • 朴素贝叶斯不是一个精确的预测模型,因此其预测结果只能作为一个大致的估计。 朴素贝叶斯要求输入变量必须独立,而生活中完全独立的变量几乎没有。

应用:

  • 实时预测
  • 多类预测
  • 邮件分类
  • 推荐系统

二、朴素贝叶斯的基本原理

设一个训练集S={(Xi,Yi)},i=1,…,m,Y={0,1}
我们对似然性进行假设:X|Y~N(u,o),即属于正态分布(也可以设为伯努利、多项式分布)

由贝叶斯公式有:
在这里插入图片描述
P(Y|X)是输出Y的后验概率
P(X)是输入X的先验概率
P(X|Y)是输出的似然性

我们根据训练集训练出的模型,就可以用来预测,新进来的一个输入X时,输出Y的概率P(Y|X)是多少了。

三、建模

以二维高斯函数为例:
输入有两个特征X1,X2,
在这里插入图片描述
∵Y={0,1},设Y~Bernoulli(ɸ)
在这里插入图片描述
又假设X|Y属于正态分布,则:
在这里插入图片描述
其中Ʃ表示协方差矩阵,u是均值,是一个2*1的矩阵,u可以由对应的X直接求平均得到
∵本次仿真只考虑朴素贝叶斯,所以X1,X2独立
在这里插入图片描述
由上述表达式有,预测值:
在这里插入图片描述

补充:高维联合高斯函数的概率密度计算

在这里插入图片描述

四、 源代码

代码1:(来自网络)

#Import Library of Gaussian Naive Bayes model

from sklearn.naive_bayes import GaussianNB
import numpy as np

#assigning predictor and target variables
x= np.array([[-3,7],[1,5], [1,2], [-2,0], [2,3], [-4,0], [-1,1], [1,1], [-2,2], [2,7], [-4,1], [-2,7]])
y = np.array([3, 3, 3, 3, 4, 3, 3, 4, 3, 4, 4, 4])
#Create a Gaussian Classifier
model = GaussianNB()

# Train the model using the training sets
model.fit(x, y)

#Predict Output
predicted= model.predict([[1,2],[3,4],[-3,7],[-4,0]])
print 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值