用python对iris数据集进行简单的bayes分类
发布时间:2018-03-15 18:09,
浏览次数:745
, 标签:
python
iris
bayes
GitHub地址:https://github.com/kevinten10/Data-Processing
(代码在最下面)
正在学习人工智能课程,作业要求自己写一个贝叶斯分类器,分享一下,一起学习
题目描述:
对于Iris数据库,假设样本数据服从多变量正态分布。用Python实现以下内容:
1)用最大似然估计方法估计先验概率密度。
2)建立最小错误率Bayes分类器。
3)检验分类器性能。
实验内容及数学原理:
(1)最大似然估计方法估计先验概率:
设样本类型为Y,样本有Ck种类别,k=1,2,3
极大似然估计先验概率为:
P(Y=Ck)=∑(i=1,2,…N)I(yi=ck)/N,k=1,2,3
∵指示函数I(yi=ck)=1(当yi=ck成立)或0(当yi=ck不成立)
∴先验概率P(Y=Ck)= 样本中Ck的数目/样本总数,k=1,2,3
∴P(Y='Iris-setosa')=∑I(Y=C1)/N总
P(Y='Iris-versicolor')=∑I(Y=C2)/N总
P(Y='Iris-virginica')=∑I(Y=C3)/N总
(2)建立最小错误率Bayes分类器
已知输入变量X={x1,x2,x3,x4}服从四维正态分布 N4(μ,∑),μ为样本均值,∑为样本协方差矩阵
四维正态分布概率密度函数如下:
f(X|μ,∑)=[1/gen(2π)^d * gen(|∑|)]exp[-1/2 * (X-μ)∑^-1(X-μ)T]
已知先验概率P(Y=Ck)= 1/3 k=1,2,3
求后验概率为P(Y=Ck|X)= P(X|Y=Ck)P(Y=Ck)/∑P(X|Y=Ck)P(Y=Ck)
∴需要根据样本数据估计μ,∑
∑=[cov(x1,x1),…,…,…] u1=`x1 μ=(μ1,μ2,μ3,μ4)T
[…,cov(x2,x2),…,…] u2=`x2
[…,…,cov(x3,x3),…] u3=`x3
[…,…,…,cov(x4,x4)] u4=`x4
得到条件概率密度P(X|Y=Ck),k=1,2,3
从而得到后验概率P(Y=Ck|X),k=1,2,3
又因为在三个类别中先验概率密度P(Y=Ck)相等,分母∑P(X|Y=Ck)P(Y=Ck)相等
故只需判断条件概率密度P(X|Y=Ck)
∴通过判别一个输入X的 MAX=max{P(X|Y=C1), P(X|Y=C2), P(X|Y=C3)}
若 MAX=P(X|Y=C1),则X为C1类
若 MAX=P(X|Y=C2),则X为C2类