机器学习及应用第6章-贝叶斯分类器课件.pptx

上传人(卖家):三亚风情 文档编号:3581337 上传时间:2022-09-20 格式:PPTX 页数:67 大小:2.41MB
下载 相关 举报
机器学习及应用第6章-贝叶斯分类器课件.pptx_第1页
第1页 / 共67页
机器学习及应用第6章-贝叶斯分类器课件.pptx_第2页
第2页 / 共67页
机器学习及应用第6章-贝叶斯分类器课件.pptx_第3页
第3页 / 共67页
机器学习及应用第6章-贝叶斯分类器课件.pptx_第4页
第4页 / 共67页
机器学习及应用第6章-贝叶斯分类器课件.pptx_第5页
第5页 / 共67页
点击查看更多>>
资源描述

1、第06章 贝叶斯分类器p贝叶斯定理p朴素贝叶斯算法p极大似然估计p贝叶斯网络pEM算法6.1 引言n 计算机科学家和统计学家都会利用样本数据集训练计算机,使之能进行判断和推理。计算机科学家主要关心这些推理方法如何在计算机上有效地实现,而统计学家主要关心如何构建一个使用这些数据进行逻辑推理和判断的数学框架。n 如果对某个过程缺乏先验知识,这时可以将其视作一个随机过程,使用概率理论来分析。例如,投掷硬币就是一个典型的随机过程,因为我们不能预测任意一次投币的结果是正面还是反面,而只能谈论下一次投币是正面或反面的概率。6.1 引言6.1 引言1763年6.1 引言6.1 引言 1|iiiiNjjjP

2、ABP A B P BP BAP AP A BP B6.2 朴素贝叶斯分类n 朴素贝叶斯分类(Naive Bayes Classifier)是基于贝叶斯定理和特征条件独立假设的分类算法。n 朴素贝叶斯分类器源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。n 朴素贝叶斯模型的参数也不多,对缺失数据不太敏感,算法实现比较简单。n 通俗地讲,朴素贝叶斯分类器可以看作:对于给定的待分类项,求解在该对于给定的待分类项,求解在该分类项出现的条件下,各个类别出现的概率。根据各个类别出现的概率,分类项出现的条件下,各个类别出现的概率。根据各个类别出现的概率,哪个最大,就将其划归为那个类别。哪个最大,

3、就将其划归为那个类别。6.2 朴素贝叶斯分类n假设样本 ,标签 。令x为X上的随机向量,y是Y上的随机向量,P(X,Y)为X和Y的联合概率分布。假定训练数据集 是由P(X,Y)独立同分布产生的,那么朴素贝叶斯算法可从训练数据集T中学习联合概率分布P(X,Y),即n先验概率分布:n条件(似然)概率分布:6.2.1 朴素贝叶斯算法,kP YckK1 2|,kP XYckKx1 2n 朴素贝叶斯算法有一个假设:在分类确定的条件下,要求分类的各个特征是条件独立的。12|,|nknknjjkjP XY=cP XxXxXxY=cP XxY=cx121 T12,nn=xxxXRx,KyYc cc12,NNT

4、=yyyxxx11226.2 朴素贝叶斯分类根据贝叶斯定理,计算后验概率:于是,朴素贝叶斯分类器表示为:考虑分类特征的条件独立假设,有:|,|njkjkjkKjjjP YcP XxY=cP Y=cXkKP XYcP Ycxx111 2|argmax|knjkjkjKcjjjP YcP XxY=cyfP XYcP Yc11xx|argmaxknjkjkcjyfP YcP XxY=c1x由于对所有的 ,上式的分母都相同,因此可简写为:6.2 朴素贝叶斯分类6.2.2 朴素贝叶斯分类算法n准备工作阶段准备工作阶段:这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类

5、中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。n分类器训练阶段分类器训练阶段:其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。n应用应用阶段阶段:其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。朴素贝叶斯分类算法大致可分为三个阶段:6.2 朴素贝叶斯分类6.2.2 朴素贝叶斯分类算法6.2 朴素贝叶斯分类6.2.2 朴素贝叶斯分类算法例如,使用贝叶斯分类器对垃圾邮件进行分类和过滤。贝叶斯分类器需要依赖历史数据进行学习

6、,假定包含关键词“中奖”的就算作垃圾邮件。先经过人工筛选找出10封邮件,并对包含关键词“中奖”的邮件标注为垃圾邮件(Spam)。序号包含关键词(“中奖”)邮件类别1NoEmail2YesSpam3YesSpam4NoEmail5NoSpam6YesSpam7NoEmail8YesEmail9NoEmail10NoEmail6.2 朴素贝叶斯分类6.2.2 朴素贝叶斯分类算法统计普通邮件和垃圾邮件中出现“中奖”关键词的频率并进行汇总,分别记录普通邮件中出现和未出现该关键词的次数和垃圾邮件中出现和未出现该关键词的次数,并分别进行汇总。EmailSpam频率Yes134No516频率6410Emai

7、lSpam概率Yes1/6 P(Yes|Email)3/4 P(Yes|Spam)0.4 P(Yes)No5/6 P(No|Email)1/4 P(No|Spam)0.6 P(No)0.6 P(Email)0.4 P(Spam)n 根据贝叶斯定理,已知垃圾邮件中出现“中奖”关键词的概率P(Yes),垃圾邮件出现的概率P(Spam),以及垃圾邮件中有“中奖”关键词出现的概率P(Yes|Spam),那么当出现“中奖”关键词时,该邮件是垃圾邮件的概率P(Spam|Yes)为6.2 朴素贝叶斯分类6.2.2 朴素贝叶斯分类算法EmailSpam概率Yes1/6 P(Yes|Email)3/4 P(Ye

8、s|Spam)0.4 P(Yes)No5/6 P(No|Email)1/4 P(No|Spam)0.6 P(No)0.6 P(Email)0.4 P(Spam)附:6.2 朴素贝叶斯分类6.2.3 朴素贝叶斯分类算法的Python实现DayOutlookTempHumidityWindyPlayTennisDay 1SunnyHotHighWeakNoDay 2SunnyHotHighStrongNoDay 3OvercastHotHighWeakYesDay 4RainMildHighWeakYesDay 5RainCoolNormalWeakYesDay 6RainCoolNormalSt

9、rongNoDay 7OvercastCoolNormalStrongYesDay 8SunnyMildHighWeakNoDay 9SunnyCoolNormalWeakYesDay 10RainMildNormalWeakYesDay 11SunnyMildNormalStrongYesDay 12OvercastMildHighStrongYesDay 13OvercastHotNormalWeakYesDay 14RainMildHighStrongNon假定给定了如下表所示的训练样本数据,训练的目的是根据给定的天气状况判定是否去PlayTennis?当给出一个新的实例,如Outloo

10、k=Sunny,Temp=Cool,Humidity=High,Windy=Strong时,那么预测的目标概念PlayTennis的目标值是Yes还是No?6.2 朴素贝叶斯分类6.2.3 朴素贝叶斯分类算法的Python实现对于样本(“Outlook”:”Sunny”,“Temp”:“Cool”,“Humidity”:“High”,“Windy”:“Strong”),计算:n 输入:以字典方式存储的(分类)天气信息,如Outlook:Sunny,Temp:Hot,Humidity:High,Windy:Weak,class:No。n 输出:类别(Yes,No)6.2 朴素贝叶斯分类6.2.3

11、 朴素贝叶斯分类算法的Python实现6.2 朴素贝叶斯分类6.2.3 朴素贝叶斯分类算法的Python实现from numpy import*#训练朴素贝叶斯模型(仅针对属性值为离散型情况)class BayesClassifier():#简单贝叶斯分类器 def _init_(self):pass#分离数据集的属性和标签,并分别保存下来 def getFeatures(self,dataElem,Label):self.Label=Label#数据集的标签名称 self.FLists=cl for cl in dataElem#数据集的属性名称 self.FLists.remove(sel

12、f.Label)return self.FListsn 示例程序如下:6.2 朴素贝叶斯分类6.2.3 朴素贝叶斯分类算法的Python实现#分离数据:数据集和标签 def splitData(self,dataSets):labels=clself.Label for cl in dataSets#标签数据集 features=#属性数据集 for i in range(len(dataSets):feature=for fa in dataSetsi:#处理每一个数据 if fa!=self.Label:#判断是标签,还是属性 featurefa=dataSetsifa print(fea

13、ture)features.append(feature)return features,labels6.2 朴素贝叶斯分类6.2.3 朴素贝叶斯分类算法的Python实现#训练简单贝叶斯分类器 def train(self,features,labels):self.sampleNum=len(features)#样本数目 self.countDic=#统计各个条件概率的出现次数 self.labelSet=set()#集合存放类标,如:Y=1 or Y=0 for i in range(len(labels):#统计类标不同值出现的次数 TempStr=Y=+str(labelsi)sel

14、f.labelSet.add(str(labelsi)if TempStr in self.countDic:self.countDicTempStr+=1 else:self.countDicTempStr=1 for i in range(len(features):#统计各个条件概率组合出现的次数6.2 朴素贝叶斯分类6.2.3 朴素贝叶斯分类算法的Python实现 for fl in self.FLists:TempStr=F+str(fl)+=+str(featuresifl)+|Y=+str(labelsi)if TempStr in self.countDic:self.coun

15、tDicTempStr+=1 else:self.countDicTempStr=1 for key in self.countDic.keys():#遍历次数统计字典计算概率 if key.find(|)!=-1:#计算条件概率P(Fi=a|Y=b)targetStr=keykey.find(|)+1:#类标字符串:Y=1 or Y=-0 self.countDickey/=self.countDictargetStr#计算条件概率P(Fi=a|Y=b)=Count(Fi=a,Y=b)/Count(Y=b)for label in self.labelSet:#计算类标概率P(Y=b)6.2

16、 朴素贝叶斯分类6.2.3 朴素贝叶斯分类算法的Python实现 TempStr=Y=+str(label)self.countDicTempStr/=self.sampleNum def classify(self,feature):#使用训练后的贝叶斯分类器分类新样本#计算后验概率P(Y=b|Sample=feature)probabilityMap=for label in self.labelSet:TempProbability=1.0 for fl in self.FLists:TempStr=F+str(fl)+=+str(featurefl)+|Y=+label if Temp

17、Str not in self.countDic:#遇到新的特征值,导致该概率P(Fi=a|Y=b)为0,将它校正为非0值(1/Count(Y=b)6.2 朴素贝叶斯分类6.2.3 朴素贝叶斯分类算法的Python实现 TempProbability*=(1.0/self.countDicY=+label)/self.sampleNum else:TempProbability*=self.countDicTempStr TempProbability*=self.countDicY=+label probabilityMaplabel=TempProbability maxProbabili

18、ty=0.0 for label in self.labelSet:#选取使后验概率P(Y=b|Sample=feature)最大的类标作为目标类标 if probabilityMaplabel maxProbability:maxProbability=probabilityMaplabel targetLabel=label probabilityMap.clear()return targetLabel6.2 朴素贝叶斯分类6.2.3 朴素贝叶斯分类算法的Python实现 def _del_(self):self.countDic.clear()if _name_=_main_:#dat

19、a data=outlookOutlook:sunnySunny,tempTemp:hotHot,humidityHumidity:highHigh,windWindy:weakWeak,class:noNo,outlookOutlook:sunnySunny,tempTemp:hotHot,humidityHumidity:highHigh,windWindy:strongStrong,class:noNo,outlookOutlook:overcastOvercast,tempTemp:hotHot,humidityHumidity:highHigh,windWindy:weakWeak,

20、class:yesYes,outlookOutlook:rainRain,tempTemp:mildMild,humidityHumidity:highHigh,windWindy:weakWeak,class:yesYes,6.2 朴素贝叶斯分类6.2.3 朴素贝叶斯分类算法的Python实现outlookOutlook:rainRain,tempTemp:coolCool,humidityHumidity:normalNormal,windWindy:weakWeak,class:yesYes,outlookOutlook:rainRain,tempTemp:coolCool,humidi

21、tyHumidity:normalNormal,windWindy:strongStrong,class:noNo,Outlook:Overcast,Temp:Cool,Humidity:Normal,Windy:Strong,class:Yes,Outlook:Sunny,Temp:Mild,Humidity:High,Windy:Weak,class:No,Outlook:Sunny,Temp:Cool,Humidity:Normal,Windy:Weak,class:Yes,Outlook:Rain,Temp:Mild,Humidity:Normal,Windy:Weak,class:Y

22、es,Outlook:Sunny,Temp:Mild,Humidity:Normal,Windy:Strong,class:Yes,Outlook:Overcast,Temp:Mild,Humidity:High,Windy:Strong,class:Yes,Outlook:Overcast,Temp:Hot,Humidity:Normal,Windy:Weak,class:Yes,Outlook:Rain,Temp:Mild,Humidity:High,Windy:Strong,class:No 6.2 朴素贝叶斯分类6.2.3 朴素贝叶斯分类算法的Python实现#calculate NB

23、C=BayesClassifier()NBC.getFeatures(data0,class)features,labels=NBC.splitData(data)NBC.train(features,labels)print(NBC.classify(outlookOutlook:sunnySunny,tempTemp:coolCool,humidityHumidity:highHigh,windWindy:strongStrong),NBC.classify(outlookOutlook:overcastOvercast,tempTemp:coolCool,humidityHumidity

24、:normalNormal,windWindy:strongStrong)运行结果:noNo yesYes6.2 朴素贝叶斯分类6.2.4 sklearn的朴素贝叶斯方法n sklearn提供多个朴素贝叶斯分类器,他们的主要区别在于假设了不同的概率分布,下面介绍三种常用的朴素贝叶斯分类器。高斯朴素贝叶斯分类器(GaussianNB)多项式贝叶斯分类器(MultimomialNB)伯努利贝叶斯分类器(BernoulliNB)n 其函数原型为class sklearn.naive_bayes.GaussianNB(priors=None)n 参数如下:priors:数组,默认参数值为None。类的

25、先验概率,如果指定了先验信息,则不会根据数据进行调整。6.2 朴素贝叶斯分类6.2.4 sklearn的朴素贝叶斯方法在高斯朴素贝叶斯分类器中,假设特征的条件概率分布满足高斯分布,即n 高斯朴素贝叶斯分类器(GaussianNB)6.2 朴素贝叶斯分类6.2.4 sklearn的朴素贝叶斯方法n 高斯朴素贝叶斯分类器(GaussianNB)n 参数如下:priors:数组,默认参数值为None。类的先验概率,如果指定了先验信息,则不会根据数据进行调整。n 属性有:class_prior:数组。每个类别的概率 ,形状为(n_classes,)class_count:数组。每个类别包含的训练样本数

26、量,形状为(n_classes,)theta:数组。每个类别上每个特征的均值 ,形状为(n_classes,n_features)sigma:数组。每个类别上每个特征的标准差 ,形状为(n_classes,n_features)6.2 朴素贝叶斯分类6.2.4 sklearn的朴素贝叶斯方法n 多项式贝叶斯分类器(MultimomialNB)在多项式朴素贝叶斯分类器中,假设特征的条件概率分布满足多项式分布,即其中,表示特征 的取值,其取值个数为Sj个;,表示属于类别Ck的样本的数量 ;表示属于类别Ck且特征 的样本的数量。6.2 朴素贝叶斯分类6.2.4 sklearn的朴素贝叶斯方法n 多项

27、式贝叶斯分类器(MultimomialNB)其函数原型为class sklearn.naive_bayes.MultinomialNB(alpha=1.0,fit_prior=True,class_prior=None)n 参数如下。alpha:浮点数,可选,默认参数值为1.0。值。fit_prior:布尔值,可选,默认参数值True。如果为True,则不去学习,以均匀分布替代;否则,学习 。class_prior:array_like数组,可选,默认参数值为None。指定每个分类的先验概率,kP yckP yc6.2 朴素贝叶斯分类6.2.4 sklearn的朴素贝叶斯方法n 主要属性如下。

28、class_log_prior:数组。每个类别调整后的经验概率分布的对数值,形状为(n_classes,);feature_log_prob:数组。经验概率分布 的对数值,形状为(n_classes,n_features);class_count:数组。每个类别包含的训练样本数量,形状为(n_classes,);feature_count:数组。训练过程中,每个类别每个特征遇到的样本数,形状为(n_classes,n_features)。6.2 朴素贝叶斯分类6.2.4 sklearn的朴素贝叶斯方法n 伯努利贝叶斯分类器(BernoulliNB)在伯努利朴素贝叶斯分类器中,假设特征的条件概率

29、分布满足二项分布,即1|1jjXXjkP Xyc=ppn 其函数原型为class sklearn.naive_bayes.BernoulliNB(alpha=1.0,binarize=0.0,fit_prior=True,class_prior=None)其中,要求特征的取值为6.2 朴素贝叶斯分类6.2.4 sklearn的朴素贝叶斯方法n 多项式贝叶斯分类器(MultimomialNB)n 主要参数如下。alpha:浮点数,可选,默认参数值为1.0。值。binarize:浮点数或None,可选,默认参数值为0.0。如果为None,则假设院士数据已经二元化了;如果为浮点数,则会以该数值为界,

30、特征值大于它的取1,特征值小于它的取0。fit_prior:布尔值,可选,默认参数值为True。如果为True,则不去学习 ,以均匀分布替代;否则,学习 。class_prior:数组,大小为n_classes,,可选,默认参数值为None。指定每个分类的先验概率,。如果指定了该参数,则每个分类的先验概率将不再从数据集中学习。kP yckP yc,1,2,kP yckK6.3 极大似然估计n 假设有一个独立同分布(iid)样本 ,其中服从定义在参数 上的已知概率密度 分布。此时,希望找出这样的参数 ,使得 尽可能地像是从中抽取出来的。因为 是独立的,所以给定参数 ,样本的似然是单个点似然的乘积

31、,即 T,nn=xxxXRx12n 极大似然估计(Maximum Likelihood Estimation,MLE)方法也称为最大似然估计。是求估计的另一种方法,1821年首先由德国数学家C.F.Gauss(高斯)提出,但是这个方法通常被归功于英国的统计学家R.A.Fisher(罗纳德费希尔),他在1922年的论文“On the mathematical foundations of theoretical statistics,reprinted in Contributions to Mathematical Statistics”中再次提出了这个思想,并且首先探讨了这种方法的一些性质。

32、6.3 极大似然估计n 求解极大似然估计的一般步骤为:写出似然函数;对似然函数取对数,并整理;求导数,并令导数为0,得到似然方程;解似然方程,得到的参数即为所求。6.3 极大似然估计6.3.1 EM算法期望最大化(Expectation-maximization,EM)算法是一种迭代算法,用于含有隐含变量概率模型参数的极大似然估计或后验概率估计。EM算法的每一次迭代都由两部组成:E步求期望步求期望;M步计算极大值步计算极大值。对于概率模型的参数估计,可以使用极大似然估计法或贝叶斯估计法来估计模型参数,但是当模型含有隐变量时,这种方法就失效了。考虑带隐变量(其观测值为z)的参数估计问题,希望拟合

33、出包含隐变量z的模型 中的参数 将观测数据 (亦称不完全数据)记为 不可观测数据记为 。Y和Z合在一起称为完全数据。那么观测数据的似然函数可以表示为EM算法是一种迭代算法,通过迭代的方式求取目标函数 的极大值。ln|LPY6.3 极大似然估计n 使用Jensen不等式:6.3.1 EM算法 ln|,ln|nnzLLP zPzPYYlnlnlog,0,1ijijjjjjjyy n 得到下界|,|,ln|,ln|,|,|,ln|,ln|,|,|,ln|,nnnnzznnnnznnznnP zPzLLP zP zPP zP zPz=P zP zPP zP zPzP zP|P zYYYYYYYYYYY

34、YYY-6.3 极大似然估计6.3.1 EM算法|,|,ln|,nnnznnP zPzlLP zP|P z YYYY1argmax|,ln|,argmax|,ln,|nnznzP zP zPzP zPzYYYY6.3 极大似然估计6.3.1 EM算法6.3 极大似然估计6.3.2 EM算法步骤|,|ln,|,ln,|nnnzQ=EPz=P zPzZ YYYY 1argmax|nnQ n 假设有三枚硬币A、B、C,这些硬币正面出现的概率分别是 、p和q。进行如下掷硬币试验:先掷A,如果A是正面则再掷B,如果A是反面则再掷C。对于B或C的结果,如果是正面则记为1,如果是反面则记为0。进行N次独立重

35、复实验,得到结果。现在只能观测到结果,不能观测到掷硬币的过程,估计模型参数 。n 实验结果是可观测数据 ,硬币A的结果是不可观测数据 且z只有两种可能取值1和0。6.3 极大似然估计6.3.3 三硬币的EM求解,=p q6.3 极大似然估计6.3.3 三硬币的EM求解11|,|,1|1,0|0,111jjjjjjjzzjjyyyyP yP yzP zP yzP zP yzP zP yzpp qqn 对于第j次试验,有1111|111jjjjNNyyyyjjjPP ypp qqY6.3 极大似然估计n E-step,求期望(Q函数)11|,ln,|,ln,|1|,ln,1|0|,ln,0|nnz

36、NjnjjzNjnjjjjQP zPzP z yP y zP zyP y zP zyP y z YY1,11,11|,1111jjjjjjyynnnj nyyyyjnnnnnnnj n pp=zP z y ppqq 其他情况,6.3 极大似然估计n E-step,求期望(Q函数)1111,|11,jjjjyyjyypp ,zP yz qq其他情况因此,Q函数的表达式为11,1|ln11ln 11jjjjNyyyynj nj njQpp qq 6.3 极大似然估计n M-step,求Q函数的极大值令Q函数对参数求导数,并等于零。令 ,可得 所以|0nQ,11Nj nj=n1,11Nnj nj=n

37、 11,11111,11,11,1|ln11ln 1111 110111jjjjjjjjjjNyyyynj nj njyyyyNjjj nyyjNNNj njj njjj njjQpp qqpp y pppyp=ppypyp=p-pp-p 6.3 极大似然估计令 ,可得|0nQp,1,1Nj njjNj njyp=所以 ,,11,1Nj njjnNj njyp=,11,111Nj njjnNj njyq=n 得到三个参数的迭代式,便可给定初值,迭代求解了。11,11111,11,11,1|ln11ln 1111 110111jjjjjjjjjjNyyyynj nj njyyyyNjjj nyy

38、jNNNj njj njjj njjQpp qqpp y pppyp=ppypyp=p-pp-p n M-step,求Q函数的极大值6.3 极大似然估计6.3.4 sklearn的EM方法n sklearn提供了EM算法的实现,其函数原型如下:class sklearn.mixture.GaussianMixture(n_components=1,covariance_type=full,tol=0.001,reg_covar=1e-06,max_iter=100,n_init=1,init_params=kmeans,weights_init=None,means_init=None,pre

39、cisions_init=None,random_state=None,warm_start=False,verbose=0,verbose_interval=10)n 其参数如下:n_components:整数,默认参数值为1。分模型的数量。covariance_type:字符串,默认参数值为“full”。协方差类型,必须是下列值之一:“spherical”:球状型,每个分模型的协方差矩阵都是一个标量值;“tied”:结点型,所有的分模型都共享一个协方差矩阵;“diag”:对角型,每个分模型的协方差矩阵都是对角矩阵;“full”:全型,每个分模型都有自己的协方差矩阵。6.3 极大似然估计6.

40、3.4 sklearn的EM方法random_state:整数,RandomState实例或者None,默认参数值为None。precisions_init:array_like,可选,默认参数值为None。用户提供的初始precisions(协方差矩阵的逆矩阵)。如果为None,precisions初始化为“init_params”方法。根据covariance_type的不同,该参数的形状也不同,具体如下:如果covariance_type=spherical,则大小为(n_components,);如果covariance_type=tied,则大小为(n_features,n_feat

41、ures);如果covariance_type=diag,则大小为(n_components,n_features);如果covariance_type=full,则大小为(n_components,n_features,n_features)。init_params:只能为“kmeans”“random”,默认参数值为“kmeans”。该方法用于初始化权值。6.3 极大似然估计6.3.4 sklearn的EM方法n 测试GaussianMixture的不同协方差对分类的影响,程序如下:import matplotlib as plimport matplotlib.pyplot as plt

42、import numpy as npfrom sklearn.datasets import load_irisfrom sklearn.mixture import GaussianMixturefrom sklearn.model_selection import StratifiedKFoldcolors=navy,turquoise,darkorangedef make_ellipses(gmm,ax):for n,color in enumerate(colors):if gmm.covariance_type=full:covariances=gmm.covariances_n:2

43、,:2 elif gmm.covariance_type=tied:covariances=gmm.covariances_:2,:2 elif gmm.covariance_type=diag:covariances=np.diag(gmm.covariances_n:2)6.3 极大似然估计 elif gmm.covariance_type=spherical:covariances=np.eye(gmm.means_.shape1)*gmm.covariances_n v,w=np.linalg.eigh(covariances)u=w0/np.linalg.norm(w0)angle=

44、np.arctan2(u1,u0)angle=180*angle/np.pi#转换为角度 v=2.*np.sqrt(2.)*np.sqrt(v)ell=pl.patches.Ellipse(gmm.means_n,:2,v0,v1,180+angle,color=color)ell.set_clip_box(ax.bbox)ell.set_alpha(0.5)ax.add_artist(ell)iris=load_iris()#将iris数据集分为4段,75%用作训练集,剩余的25%.用作测试集skf=StratifiedKFold(n_splits=4)train_index,test_in

45、dex=next(iter(skf.split(iris.data,iris.target)程序续6.3 极大似然估计 X_train=iris.datatrain_index#训练集的样本y_train=iris.targettrain_index#训练集的标签X_test=iris.datatest_index#测试集的样本y_test=iris.targettest_index#测试集的标签n_classes=len(np.unique(y_train)#用不同的协方差,构建不同的分类估计器estimators=dict(cov_type,GaussianMixture(n_compon

46、ents=n_classes,covariance_type=cov_type,max_iter=20,random_state=0)for cov_type in spherical,diag,tied,full)n_estimators=len(estimators)plt.figure(figsize=(3*n_estimators/2,6)plt.subplots_adjust(bottom=.01,top=0.95,hspace=.15,wspace=.05,left=.01,right=.99)程序续6.3 极大似然估计for index,(name,estimator)in en

47、umerate(estimators.items():estimator.means_init=np.array(X_trainy_train=i.mean(axis=0)for i in range(n_classes)#使用EM算法训练模型的其他参数 estimator.fit(X_train)h=plt.subplot(2,n_estimators/2,index+1)make_ellipses(estimator,h)for n,color in enumerate(colors):data=iris.datairis.target=n plt.scatter(data:,0,data

48、:,1,s=0.8,color=color,label=iris.target_namesn)#用图形方式显示测试数据 for n,color in enumerate(colors):data=X_testy_test=n plt.scatter(data:,0,data:,1,marker=x,color=color)程序续6.3 极大似然估计y_train_pred=estimator.predict(X_train)train_accuracy=np.mean(y_train_pred.ravel()=y_train.ravel()*100 plt.text(0.05,0.9,Trai

49、n accuracy:%.1f%train_accuracy,transform=h.transAxes)y_test_pred=estimator.predict(X_test)test_accuracy=np.mean(y_test_pred.ravel()=y_test.ravel()*100 plt.text(0.05,0.8,Test accuracy:%.1f%test_accuracy,transform=h.transAxes)plt.xticks()plt.yticks()plt.title(name)plt.legend(scatterpoints=1,loc=lower

50、right,prop=dict(size=12)plt.show()程序续6.3 极大似然估计n 运行效果:6.4 贝叶斯网络6.4.1 贝叶斯网络的概念:6.4 贝叶斯网络 如果将某个系统中涉及的随机变量,根据是否条件独立绘制在一个有向图中,就形成了一个贝叶斯网络,如下图所示。在贝叶斯网络中,以圈表示随机变量(Random Variables),箭头表示条件依赖(Conditional Dependencies)。6.4 贝叶斯网络6.4.1 贝叶斯网络的构造和学习 n 构建贝叶斯网络包括以下三部分内容:变量的定义;结构学习;参数学习n 网络结构学习的目标是找到和样本数据X匹配度最好的贝叶斯

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(机器学习及应用第6章-贝叶斯分类器课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|