您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > iris数据集下的朴素贝叶斯
数据挖掘(计科一班——杨平——1025115034)题目:iris数据集下的朴素贝叶斯实现一.问题描述:Iris数据集是在分类和模式识别研究中常用的基准数据。它是根据花瓣和萼片的长度和宽度来对Iris进行分类。Iris数据集包含3类4维样本,分别标为1,2,3。其中,每类样本数目为50,且服从正态分布,每个数据样本有4个特征向量,分别代表萼片长度,萼片宽度,花瓣长度和花瓣宽度。分类是利用预定的已分类数据集构造出一个分类函数或分类模型(也称作分类器),并利用该模型把未分类数据映射到某一给定类别中的过程。原理描述:贝叶斯公式1(|)()(|)max()miiijPXPPXPX的实质是通过观察样本将状态的先验概率转化为状态的后验概率,给定一个未知类别的数据样本X,贝叶斯分类法将预测X属于具有最高后验概率的类。本问题可以数学描述为多元正态概率型下的最小错误率贝叶斯分类。1)先验概率设数据库表有d个属性,因此,可以用一个d维列向量12[,,...,]Tdxxxx来表示。同时,假定有c个类12,,...c。如果类的先验概率未知,则可以假定这些类是等概率的,即12()()...()cPPP,且()iiSPS其中,iS是类i中的训练样本数,而S是训练样本总数。2)参数估计对于多变量正态分布,估计其均值和方差:11ˆNkkxN11ˆˆ()()NTkkkNxx其中,kx为多元正态分布总体中第K个抽样,是d维向量,ˆ是均值向量的最大似然估计,是协方差矩阵的最大似然估计。二.利用python调用matlab函数,实现联合开发.m文件见于附录下面是python调用matlab方法实现fromwin32com.clientimportDispatchh=Dispatch(Matlab.application)#启动MATLAB自动化服务器h.execute(Iris_import.m)h.execute(compare3.m)三.附录(1).“compare3.m”文件functionmax=compare3(a,b,c)max=a;ifmaxbmax=b;endifmaxcmax=c;End(2).“Iris_import.m”文件clc;clearall;d=4;c=3;N=50;D=load('Iris_data.txt');data=zeros(150,d);G1=zeros(50,d);G2=zeros(50,d);G3=zeros(50,d);fori=1:1:4data(:,i)=D(:,i+1);endfori=1:1:NG1(i,:)=data(i,:);G2(i,:)=data(i+N,:);G3(i,:)=data(i+2*N,:);enddisp(G1);disp(G2);disp(G3);%计算各组的均值向量和协方差矩阵miu1=mean(G1,1)miu2=mean(G2,1)miu3=mean(G3,1)sigma1=zeros(d,d);sigma2=zeros(d,d);sigma3=zeros(d,d);fori=1:1:Nsigma1=sigma1+(G1(i,:)-miu1)'*(G1(i,:)-miu1);sigma2=sigma2+(G2(i,:)-miu2)'*(G2(i,:)-miu2);sigma3=sigma3+(G3(i,:)-miu3)'*(G3(i,:)-miu3);endsigma1=sigma1/Nsigma2=sigma2/Nsigma3=sigma3/N%代入判别函数,实现分类R=zeros(150,3);fid=fopen('classifier_result.txt','wt');fori=1:1:150R(i,1)=-1/2*(data(i,:)-miu1)*inv(sigma1)*((data(i,:)-miu1)')-1/2*log(det(sigma1));R(i,2)=-1/2*(data(i,:)-miu2)*inv(sigma2)*((data(i,:)-miu2)')-1/2*log(det(sigma2));R(i,3)=-1/2*(data(i,:)-miu3)*inv(sigma3)*((data(i,:)-miu3)')-1/2*log(det(sigma3));switch(compare3(R(i,1),R(i,2),R(i,3)))caseR(i,1)fprintf(fid,'第%-2d个样本属于第1类\n',i);caseR(i,2)fprintf(fid,'第%-2d个样本属于第2类\n',i);otherwiseR(i,3)fprintf(fid,'第%-2d个样本属于第3类\n',i);endendfclose(fid);(3).”Iris_data”四.实验结果得到每一类的协方差矩阵如下:最终实现的分类(部分截图)如下:从实验结果可以看出,贝叶斯分类基本可以实现将Iris数据集正确分类。其中,黑色方框圈出的是错误的分类结果。
本文标题:iris数据集下的朴素贝叶斯
链接地址:https://www.777doc.com/doc-6156521 .html