模式识别实验报告iris
- 格式:doc
- 大小:297.50 KB
- 文档页数:12
实验报告试验课程名称: 模式识别姓名: 王宇班级: 0813 学号: 081325注: 1、每个试验中各项成绩根据5分制评定, 试验成绩为各项总和2、平均成绩取各项试验平均成绩3、折合成绩根据教学纲领要求百分比进行折合6月试验一、 图像贝叶斯分类一、 试验目将模式识别方法与图像处理技术相结合, 掌握利用最小错分概率贝叶斯分类器进行图像分类基础方法, 经过试验加深对基础概念了解。
二、 试验仪器设备及软件 HP D538、 MATLAB 三、 试验原理 概念:阈值化分割算法是计算机视觉中常见算法, 对灰度图象阈值分割就是先确定一个处于图像灰度取值范围内灰度阈值, 然后将图像中每个像素灰度值与这个阈值相比较。
并依据比较结果将对应像素划分为两类, 灰度值大于阈值像素划分为一类, 小于阈值划分为另一类, 等于阈值可任意划分到两类中任何一类。
最常见模型可描述以下: 假设图像由含有单峰灰度分布目标和背景组成, 处于目标和背景内部相邻像素间灰度值是高度相关, 但处于目标和背景交界处两边像素灰度值有较大差异, 此时, 图像灰度直方图基础上可看作是由分别对应于目标和背景两个单峰直方图混合组成。
而且这两个分布应大小靠近, 且均值足够远, 方差足够小, 这种情况下直方图展现较显著双峰。
类似地, 假如图像中包含多个单峰灰度目标, 则直方图可能展现较显著多峰。
上述图像模型只是理想情况, 有时图像中目标和背景灰度值有部分交错。
这时如用全局阈值进行分割肯定会产生一定误差。
分割误差包含将目标分为背景和将背景分为目标两大类。
实际应用中应尽可能减小错误分割概率, 常见一个方法为选择最优阈值。
这里所谓最优阈值, 就是指能使误分割概率最小分割阈值。
图像直方图能够看成是对灰度值概率分布密度函数一个近似。
如一幅图像中只包含目标和背景两类灰度区域, 那么直方图所代表灰度值概率密度函数能够表示为目标和背景两类灰度值概率密度函数加权和。
假如概率密度函数形式已知, 就有可能计算出使目标和背景两类误分割概率最小最优阈值。
实验一、二维随机数的产生1、实验目的(1) 学习采用Matlab 程序产生正态分布的二维随机数 (2) 掌握估计类均值向量和协方差矩阵的方法(3) 掌握类间离散度矩阵、类内离散度矩阵的计算方法(4) 熟悉matlab 中运用mvnrnd 函数产生二维随机数等matlab 语言2、实验原理多元正态分布概率密度函数:11()()2/21/21()(2)||T X X d p X eμμπ---∑-=∑其中:μ是d 维均值向量:Td E X μμμμ=={}[,,...,]12Σ是d ×d 维协方差矩阵:TE X X μμ∑=--[()()](1)估计类均值向量和协方差矩阵的估计 各类均值向量1ii X im X N ω∈=∑ 各类协方差矩阵1()()iTi iiX iX X N ωμμ∈∑=--∑(2)类间离散度矩阵、类内离散度矩阵的计算类内离散度矩阵:()()iTi iiX S X m X m ω∈=--∑, i=1,2总的类内离散度矩阵:12W S S S =+类间离散度矩阵:1212()()Tb S m m m m =--3、实验内容及要求产生两类均值向量、协方差矩阵如下的样本数据,每类样本各50个。
1[2,2]μ=--,11001⎡⎤∑=⎢⎥⎣⎦,2[2,2]μ=,21004⎡⎤∑=⎢⎥⎣⎦ (1)画出样本的分布图;(2) 编写程序,估计类均值向量和协方差矩阵;(3) 编写程序,计算类间离散度矩阵、类内离散度矩阵; (4)每类样本数增加到500个,重复(1)-(3)4、实验结果(1)、样本的分布图(2)、类均值向量、类协方差矩阵根据matlab 程序得出的类均值向量为:N=50 : m1=[-1.7160 -2.0374] m2=[2.1485 1.7678] N=500: m1=[-2.0379 -2.0352] m2=[2.0428 2.1270] 根据matlab 程序得出的类协方差矩阵为:N=50: ]0628.11354.01354.06428.1[1=∑ ∑--2]5687.40624.00624.08800.0[N=500:∑--1]0344.10162.00162.09187.0[∑2]9038.30211.00211.09939.0[(3)、类间离散度矩阵、类内离散度矩阵根据matlab 程序得出的类间离散度矩阵为:N=50: ]4828.147068.147068.149343.14[=bS N=500: ]3233.179843.169843.166519.16[b =S根据matlab 程序得出的类内离散度矩阵为:N=50:]0703.533088.73088.71052.78[1=S ]7397.2253966.13966.18975.42[2--=S ]8100.2789123.59123.50026.121[=W SN=500: ]5964.5167490.87490.86203.458[1--=S ]8.19438420.78420.70178.496[2=S ]4.24609071.09071.06381.954[--=W S5、结论由mvnrnd 函数产生的结果是一个N*D 的一个矩阵,在本实验中D 是2,N 是50和500.根据实验数据可以看出,当样本容量变多的时候,两个变量的总体误差变小,观测变量各个取值之间的差异程度减小。
基于K-L 变换的iris 数据分类一、实验原理K-L 变换是一种基于目标统计特性的最佳正交变换。
它具有一些优良的性质:即变换后产生的新的分量正交或者不相关;以部分新的分量表示原矢量均方误差最小;变换后的矢量更趋确定,能量更集中。
这一方法的目的是寻找任意统计分布的数据集合之主要分量的子集。
设n 维矢量12,,,Tn x x x ⎡⎤⎣⎦=x ,其均值矢量E ⎡⎤⎣⎦=μx ,协方差阵()T x E ⎡⎤⎣⎦=--C x u)(x u ,此协方差阵为对称正定阵,则经过正交分解克表示为x =T C U ΛU ,其中12,,,[]n diag λλλ=Λ,12,,,n u u u ⎡⎤⎣⎦=U 为对应特征值的特征向量组成的变换阵,且满足1T -=U U 。
变换阵T U 为旋转矩阵,再此变换阵下x 变换为()T -=x u y U ,在新的正交基空间中,相应的协方差阵12[,,,]x n diag λλλ==x UC U C 。
通过略去对应于若干较小特征值的特征向量来给y 降维然后进行处理。
通常情况下特征值幅度差别很大,忽略一些较小的值并不会引起大的误差。
对经过K-L 变换后的特征向量按最小错误率bayes 决策和BP 神经网络方法进行分类。
二、实验步骤(1)计算样本向量的均值E ⎡⎤⎣⎦=μx 和协方差阵()T x E ⎡⎤⎣⎦=--C x u)(x u 5.8433 3.0573 3.7580 1.1993⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦=μ,0.68570.0424 1.27430.51630.04240.189980.32970.12161.27430.3297 3.1163 1.29560.51630.1216 1.29560.5810x ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦----=--C (2)计算协方差阵x C 的特征值和特征向量,则4.2282 , 0.24267 , 0.07821 , 0.023835[]diag =Λ-0.3614 -0.6566 0.5820 0.3155 0.0845 -0.7302 -0.5979 -0.3197 -0.8567 0.1734 -0.0762 -0.4798 -0.3583 0.0755 -0.5458 0.7537⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦=U 从上面的计算可以看到协方差阵特征值0.023835和0.07821相对于0.24267和4.2282很小,并经计算个特征值对误差影响所占比重分别为92.462%、5.3066%、1.7103%和0.52122%,因此可以去掉k=1~2个最小的特征值,得到新的变换阵12,,,new n k u u u -⎡⎤⎣⎦=U 。
武汉理工大学模式识别实验报告姓名:班级:学号:姓名:班级:学号:实验一总体概率密度分布的非参数方法一、实验目的1.了解使用非参数方法估计样本概率密度函数的原理。
2.了解Parzen窗法的原理及其参数h1,N对估计结果的影响。
3.掌握Parzen窗法的算法并用Matlab实现。
4.使用Matlab分析Parzen窗法的参数h1,N对估计结果的影响。
二、实验数据一维正态分布样本,使用函数randn生成。
三、实验结果选取的h1=0.25,1,4,N=1,16,256,4096,65536,得到15个估计结果,如下图所示。
由下面三组仿真结果可知,估计结果依赖于N和h1。
当N=1时,是一个以样本为中心的小丘。
当N=16和h1=0.25时,仍可以看到单个样本所起的作用;但当h1=1及h1=4时就受到平滑,单个样本的作用模糊了。
随着N的增加,估计量越来越好。
这说明,要想得到较精确的估计,就需要大量的样本。
但是当N取的很大,h1相对较小时,在某些区间内hN趋于零,导致估计的结果噪声大。
分析实验数据发现在h1=4,N=256时,估计结果最接近真实分布。
附录:1.Parzen窗法函数文件parzen.m function parzen=parzen(N,h1,x) %ParzenhN = h1/sqrt(N);num_x = numel(x);parzen = zeros(1, num_x);for u = 1:num_xfor i=1:Nparzen(u) = parzen(u)+exp(((x(u)-x(i))/hN).^2/-2);endparzen(u)=parzen(u)/sqrt(2*pi)/h1/sqrt(N);end2.例程文件parzen_sample.mx = randn(1,10000);%Normally distributed pseudorandom numberspx = normpdf(x,0,1);%Normal probability density function - normpdf(X,mu,sigma)h1 = [0.25, 1, 4];N = [1, 16, 256, 1024, 4096];num_h1 = numel(h1);%Number of array elementsnum_N = numel(N);figure('Name', '总体概率密度分布的非参数方法');%遍历h1for i_h1 = 1:length(h1)h1_offset = (i_h1-1)*(num_N+1)+1;%绘图位置的偏移量subplot(num_h1, num_N+1, h1_offset);plot(x, px, '.');ylabel(sprintf('%s%4.2f', 'h1=', h1(i_h1)));title('正态分布样本的概率密度函数')%遍历Nfor i_N = 1 : length(N)pNx=parzen(N(i_N), h1(i_h1), x);subplot(num_h1, num_N+1, h1_offset+i_N);plot(x, pNx, '.');title(sprintf('%s%d', 'N=', N(i_N)));endend姓名:班级:学号:实验二感知器准则算法实验一、实验目的1.了解利用线性判别函数进行分类的原理。
《模式识别》实验报告---最小错误率贝叶斯决策分类一、实验原理对于具有多个特征参数的样本(如本实验的iris 数据样本有4d =个参数),其正态分布的概率密度函数可定义为112211()exp ()()2(2)T d p π-⎧⎫=--∑-⎨⎬⎩⎭∑x x μx μ 式中,12,,,d x x x ⎡⎤⎣⎦=x 是d 维行向量,12,,,d μμμ⎡⎤⎣⎦=μ是d 维行向量,∑是d d ⨯维协方差矩阵,1-∑是∑的逆矩阵,∑是∑的行列式。
本实验我们采用最小错误率的贝叶斯决策,使用如下的函数作为判别函数()(|)(),1,2,3i i i g p P i ωω==x x (3个类别)其中()i P ω为类别i ω发生的先验概率,(|)i p ωx 为类别i ω的类条件概率密度函数。
由其判决规则,如果使()()i j g g >x x 对一切j i ≠成立,则将x 归为i ω类。
我们根据假设:类别i ω,i=1,2,……,N 的类条件概率密度函数(|)i p ωx ,i=1,2,……,N 服从正态分布,即有(|)i p ωx ~(,)i i N ∑μ,那么上式就可以写为1122()1()exp ()(),1,2,32(2)T i i dP g i ωπ-⎧⎫=-∑=⎨⎬⎩⎭∑x x -μx -μ对上式右端取对数,可得111()()()ln ()ln ln(2)222T i i i i dg P ωπ-=-∑+-∑-i i x x -μx -μ上式中的第二项与样本所属类别无关,将其从判别函数中消去,不会改变分类结果。
则判别函数()i g x 可简化为以下形式111()()()ln ()ln 22T i i i i g P ω-=-∑+-∑i i x x -μx -μ二、实验步骤(1)从Iris.txt 文件中读取估计参数用的样本,每一类样本抽出前40个,分别求其均值,公式如下11,2,3ii iii N ωωω∈==∑x μxclear% 原始数据导入iris = load('C:\MATLAB7\work\模式识别\iris.txt'); N=40;%每组取N=40个样本%求第一类样本均值 for i = 1:N for j = 1:4w1(i,j) = iris(i,j+1); end endsumx1 = sum(w1,1); for i=1:4meanx1(1,i)=sumx1(1,i)/N; end%求第二类样本均值 for i = 1:N for j = 1:4 w2(i,j) = iris(i+50,j+1);end endsumx2 = sum(w2,1); for i=1:4meanx2(1,i)=sumx2(1,i)/N; end%求第三类样本均值 for i = 1:N for j = 1:4w3(i,j) = iris(i+100,j+1); end endsumx3 = sum(w3,1); for i=1:4meanx3(1,i)=sumx3(1,i)/N; end(2)求每一类样本的协方差矩阵、逆矩阵1i -∑以及协方差矩阵的行列式i ∑, 协方差矩阵计算公式如下11()(),1,2,3,41i ii N i jklj j lk k l i x x j k N ωωσμμ==--=-∑其中lj x 代表i ω类的第l 个样本,第j 个特征值;ij ωμ代表i ω类的i N 个样品第j 个特征的平均值lk x 代表i ω类的第l 个样品,第k 个特征值;iw k μ代表i ω类的i N 个样品第k 个特征的平均值。
核方法课程大作业二. 分别实现KPCA与PCA在Iris和Image Segmentation数据集上的实验分析。
实验准备平台:matlab2018b实验步骤在两个数据集上,先用PCA或KPCA对数据进行降维处理,为了验证降维效果,后采用K-means进行聚类分析。
实验结果:1. Iris数据集1.1 直接用K-means算法对Iris数据集进行聚类分析,代码见文件夹2\iris的main.m,判正率达到90.67%。
1.2 先用PCA对Iris数据集进行降维,然后再用K-means进行聚类分析,代码见文件夹2\pcairis的PCAmain.m。
a.当分别选择第1、2、3、4个属性,降到一维后,K-means聚类分析的判正率分别为34.67%,35.33%,40.67%,94.67%。
降维后数据分布如下所示:b.当分别选择第12、23、34个属性,降到二维后,K-means聚类分析的判正率分别为38%,50.67%,90%。
降维后数据分布如下所示:c.当分别选择第123、234个属性,降到三维后,K-means聚类分析的判正率分别为53.33%,91.33%。
降维后数据分布如下所示:上述实验发现,不降维时的K-means判正率为90.67%,选择第四个属性降至一维后K-means的判正率为94.67%,降至其他维后判正率略有下降,这说明第四个属性就能较好地表示原有数据集,再继续加入新的特征后不能再提高判正率,会引入噪声。
1.3 先用核函数为rbf的KPCA对Iris数据集进行降维,然后再用K-means进行聚类分析,代码见文件夹2\kpcairis的KPCAmain.m。
调至最优后,判正率可达到99.33%。
结论:通过上述实验,发现对于Iris数据集,不经过降维的判正率为90.67%,经PCA降维后的最高判正率为94.67%,经过KPCA降维后的判正率为99.33%。
这也说明了降维能消除数据的一部分冗余信息,并且恰当的核函数能进一步的提升数据的信息量。
模式识别实验报告学生姓名:班学号:指导老师:机械与电子信息学院2014年 6月基于K-means算法的改进算法方法一:层次K均值聚类算法在聚类之前,传统的K均值算法需要指定聚类的样本数,由于样本初始分布不一致,有的聚类样本可能含有很多数据,但数据分布相对集中,而有的样本集却含有较少数据,但数据分布相对分散。
因此,即使是根据样本数目选择聚类个数,依然可能导致聚类结果中同一类样本差异过大或者不同类样本差异过小的问题,无法得到满意的聚类结果。
结合空间中的层次结构而提出的一种改进的层次K均值聚类算法。
该方法通过初步聚类,判断是否达到理想结果,从而决定是否继续进行更细层次的聚类,如此迭代执行,生成一棵层次型K均值聚类树,在该树形结构上可以自动地选择聚类的个数。
标准数据集上的实验结果表明,与传统的K均值聚类方法相比,提出的改进的层次聚类方法的确能够取得较优秀的聚类效果。
设X = {x1,x2,…,xi,…,xn }为n个Rd 空间的数据。
改进的层次结构的K均值聚类方法(Hierarchical K means)通过动态地判断样本集X当前聚类是否合适,从而决定是否进行下一更细层次上的聚类,这样得到的最终聚类个数一定可以保证聚类测度函数保持一个较小的值。
具体的基于层次结构的K均值算法:步骤1 选择包含n个数据对象的样本集X = {x1,x2,…,xi,…,xn},设定初始聚类个数k1,初始化聚类目标函数J (0) =0.01,聚类迭代次数t初始化为1,首先随机选择k1个聚类中心。
步骤2 衡量每个样本xi (i = 1,2,…,n)与每个类中心cj ( j = 1,2,…,k)之间的距离,并将xi归为与其最相似的类中心所属的类,并计算当前聚类后的类测度函数值J (1) 。
步骤3 进行更细层次的聚类,具体步骤如下:步骤3.1 根据式(5)选择类半径最大的类及其类心ci :ri = max ||xj - ci||,j = 1,2,…,ni且xj属于Xj(5)步骤3.2 根据距离公式(1)选择该类中距离类ci最远的样本点xi1,然后选择该类中距离xi1最远的样本点xi2。
《模式识别》实验报告三、线性分类器实验1.(a)产生两个都具有200 个二维向量的数据集X1 和X1 ’。
向量的前半部分来自m1=[-5;0]的正态分布,并且S1=I 。
向量的后半部分来自m2=[5;0]的正态分布,并且S1=I。
其中I是一个2×2 的单位矩阵。
(b)在上面产生的数据集上运用Fisher 线性判别、感知器算法和最小平方误差判别算法,需要初始化参数的方法使用不同的初始值。
(c)测试每一种方法在X1 和X1 ’ 上的性能(错误率)。
(d)画出数据集X1 和X1 ’,已经每种方法得到对应参数向量W 的分界线。
Fisher线性判别图1 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数向量w = [-9.9406, 0.9030]’错误率error=0,感知器算法:图2 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[0.1;0.1];迭代次数iter=2参数向量w = [-4.8925, 0.0920]’错误率error=0图3 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[1; 1];迭代次数iter=2参数向量w = [-3.9925, 0.9920]’错误率error=0图4 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[10; 10];迭代次数iter=122参数向量w = [-5.6569, 7.8096]’错误率error=0图5 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[50; 50];迭代次数iter=600参数向量w = [-27.0945, 37.4194]’错误率error=0图6 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[50; 100];迭代次数iter=1190参数向量w = [-54.0048, 74.5875]’错误率error=0最小平方误差判别算法:图7 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[0.1; 0.1];参数向量w = [-0.1908, -0.0001]’错误率error=0图8 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[0.5; 0.5];参数向量w = [-0.1924, 0.1492]’错误率error=0图9 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[1; 0.5];参数向量w = [-0.1914, 0.0564]’错误率error=0图10 红色为第一类,绿色为第二类,直线为对应参数向量W的分界线,参数的初始值为[1; 1];参数向量w = [-0.1943, 0.3359]’错误率error= 0.00502.重复1.中的实验内容,数据集为X2 和X2 ’。
河海大学物联网工程学院《模式识别》课程实验报告学号 _______________专业 ____计算机科学与技术_____ 授课班号 _________________________ 学生姓名 ___________________指导教师 ___________________完成时间 _______________实验报告格式如下(必要任务必须写上,可选的课后实验任务是加分项,不是必要任务,可不写):实验一、Fisher分类器实验1.实验原理如果在二维空间中一条直线能将两类样本分开,或者错分类很少,则同一类别样本数据在该直线的单位法向量上的投影的绝大多数都应该超过某一值。
而另一类数据的投影都应该小于(或绝大多数都小于)该值,则这条直线就有可能将两类分开。
准则:向量W的方向选择应能使两类样本投影的均值之差尽可能大些,而使类內样本的离散程度尽可能小。
2.实验任务(1)两类各有多少组训练数据?(易)(2)试着用MATLAB画出分类线,用红色点划线表示(中)(3)画出在投影轴线上的投影点(较难)3.实验结果(1)第一类数据有200组训练数据,第二类数据有100组训练数据。
(2)如图所示,先得出投影线的斜率,后求其投影线的垂直线的斜率,即分类线的斜率,再求分类线的过的中垂点,加上即可得出。
画出红线代码:m = (-40:0.1:80);kw = w(2)/w(1);b = classify(w1, w2, w, 0);disp(b);n = (-1/kw).* m + b;plot(m,n,'r-', 'LineWidth', 3);(3)画出投影上的投影点如图,点用X表示。
代码:u = w/sqrt(sum(w.^2));p1 = w1*u*u';plot(p1(:,1),p1(:,2),'r+')p2 = w2*u*u';plot(p2(:,1),p2(:,2),'b+')实验二、感知器实验1.实验原理(1)训练数据必须是线性可分的(2)最小化能量,惩罚函数法-错分样本的分类函数值之和(小于零)作为惩罚值(3)方法:梯度下降法,对权值向量的修正值-错分样本的特征向量2.实验任务(1)训练样本不线性可分时,分类结果如何?(2)程序33-35行完成什么功能?用MATLAB输出x1、x2、x的值,进行观察(中)(3)修改程序,输出梯度下降法迭代的次数(易);3.实验结果(1)在创建样本时,故意将两组数据靠近,实现训练样本非线性。
一、实验原理实验数据:IRIS 数据。
分为三种类型,每种类型中包括50个思维的向量。
实验模型:假设IRIS 数据是正态分布的。
实验准备:在每种类型中,选择部分向量作为训练样本,估计未知的均值和方差的参数。
实验方法:最小错误判别准则;最小风险判别准则。
实验原理:1.贝叶斯公式已知共有M 类别M i i ,2,1,=ω,统计分布为正态分布,已知先验概率)(i P ω及类条件概率密度函数)|(i X P ω,对于待测样品,贝叶斯公式可以计算出该样品分属各类别的概率,叫做后验概率;看X 属于哪个类的可能性最大,就把X 归于可能性最大的那个类,后验概率即为识别对象归属的依据。
贝叶斯公式为M i P X P P X P X P Mj jji i i ,2,1,)()|()()|()|(1==∑=ωωωωω该公式体现了先验概率、类条件概率、后验概率三者的关系。
其中,类条件概率密度函数)|(i X P ω为正态密度函数,用大量样本对其中未知参数进行估计,多维正态密度函数为)]()(21exp[)2(1)(12/12/μμπ---=-X S X SX P T n 式中,),,(21n x x x X =为n 维向量; ),,(21n μμμμ =为n 维均值向量; ]))([(TX X E S μμ--=为n 维协方差矩阵; 1-S是S 的逆矩阵;S 是S 的行列式。
大多数情况下,类条件密度可以采用多维变量的正态密度函数来模拟。
)]}()(21exp[)2(1ln{)|()(1)(2/12/i i X X S X X S X P i T in i ωωπω---=- i i T S n X X S X X i i ln 212ln 2)()(21)(1)(-----=-πωω )(i X ω为i ω类的均值向量。
2.最小错误判别准则① 两类问题有两种形式,似然比形式:⎩⎨⎧∈⇒⎩⎨⎧<>=211221)()()|()|()(ωωωωωωX P P X P X P X l 其中,)(X l 为似然比,)()(12ωωP P 为似然比阈值。
对数形式:⎩⎨⎧∈⇒-⎩⎨⎧<>-211221)(ln )(ln )|(ln )|(ln ωωωωωωX P P X P X P② 多类问题本实验采取针对多累问题的解决方法。
在待测向量X 的条件下,看哪个类的概率最大,应该把X 归于概率最大的那个类。
因此,可以通过比较各个判别函数来确定X 的类型。
M i X X P P X P P i j j Mj i i ,2,1,)}|()({max )|()(1=∈⇒=≤≤ωωωωω对数形式为:M i X X P P X P P i j j Mj i i ,2,1,)}|(ln )({ln max )|(ln )(ln 1=∈⇒+=+≤≤ωωωωω所以此时正态分布的贝叶斯分类器判别函数为)()]}()(21exp[)2(1ln{)()|(ln )()(1)(2/12/i i T in i i i P X X S X X S P X P X h i i ωπωωωω---==-)(ln ln 212ln 2)()(21)(1)(i i i T P S n X X S X X i i ωπωω+-----=-3.最小风险判别准则对观测值X 条件下,各状态后验概率求加权和的方式,表示风险如下:∑==Mj j i X P j i L X R 1)|(),()(ω其中,),(j i L 为将第j 类判为第i 类的损失。
若判对i=j ,则),(j i L 取负值或零值,表示没有损失;若判对i ≠j ,则),(j i L 取正值,数值大小表示损失多少。
对得到的M 个类型的风险值M i X R i ,2,1),(=进行比较,得到使条件风险最小的类别,判别X 属于该类别。
二、实验过程实验环境:MA TLAB R2009a1.将txt格式下的IRIS数据导入实验环境中。
实验中设计了对话框,可直接选择存放该文件的路径并导入。
clear;%从irisdatas.txt读取数据%[filename,filepath]=uigetfile('*.txt','导入数据');file = [filepath filename];fid = fopen(file); %弹出对话框,选择录入的文件if fid == -1('打开数据出错!')end2.将读入的数据进行逐行录入,按行录入在1*150的数组iris中,每一个元素中包含一个四维向量。
%逐行存入数组iris中%linenum=1;while 1tline = fgetl(fid); %读第一行if ~ischar(tline), break, end%下一行为空时跳出循环iris{linenum} = sscanf(tline, '%f');%读取数据,存数组iris中linenum=linenum+1;end33.通过计算,分别估计出三类的统计特征值,即正态分布的两个重要参数均值μ和方差2σ。
∑===501)()(i i x x E μ,]))([(T X X E S μμ--=。
以下程序段为第一类特征值求取过程,第二、三类相似,实验中,取第偶数个向量为训练样本。
%估计第一类iris 数据的统计特征% sum=0; for j=1:1:4for i=1:2:50 yangben1=iris{i}; sum=sum+yangben1(j,1); endmean1(j,1)=sum/25;%mean1是第一类数据的期望 sum=0; endsigema=0; for i=1:2:50sigema=sigema+(iris{i}-mean1)*(iris{i}-mean1)'; endsigema1=sigema/25;%sigema1为第一类数据的协方差矩阵4.已经估计出三类数据的统计特征。
首先使用最小错误判别准则进行分类,实验中采用对数形式计算,假设三种类型的先验概率相等,即均为1/3,在某一X下得到的三个后验概率的函数。
比较三个值的大小,哪个最大,就可判断X属于哪一类。
最后进行了分类器判据结果的验证。
%对150组数据进行分类,并验证结果的正确性%for i=1:1:150x=iris{i};%分别代入三个后验概率函数中%h1=-0.5*(x-mean1)'*inv(sigema1)*(x-mean1)-2*log(2*pi)-0.5*log(d et(sigema1))+log(1/3);h2=-0.5*(x-mean2)'*inv(sigema2)*(x-mean2)-2*log(2*pi)-0.5*log(d et(sigema2))+log(1/3);h3=-0.5*(x-mean3)'*inv(sigema3)*(x-mean3)-2*log(2*pi)-0.5*log(d et(sigema3))+log(1/3);h(1)=h1;h(2)=h2;h(3)=h3;%比较三个数据的大小,并判断属于哪一类%max=h(1);class=1;for j=1:1:3if h(j)>maxmax=h(j);class=j;endend%对分类器决策的结果进行验证并输出结果%if (i<=50 & class~=1) | (i>50 & i<=100 & class~=2) | (i>100 & class~=3)fprintf('对于“判断第%d个数据属于第%d类”的分类是错误的!\n',i,class);elsefprintf('判断第%d个数据属于第%d类\n',i,class);endend55.再使用最小风险判别准则进行分类,实验中扔采用对数形式计算,假设三种类型的先验概率相等,即均为1/3。
设计出风险参数矩阵L,该数据可根据实际损失的情况需要进行修改。
将X代入得到三个数值,哪个最小,即为风险最小,便属于该类型。
最后同样进行了判别结构的验证。
%对150组数据进行分类,并验证结果的正确性%hw1=log(1/3);hw2=log(1/3);hw3=log(1/3);%三个类型的先验函数相等L=[0,1,1;1,0,1;1,1,0];%设计风险参数矩阵,可根据损失多少进行改变for i=1:1:150x=iris{i};%先计算先验概率%hxw1=-0.5*(x-mean1)'*inv(sigema1)*(x-mean1)-2*log(2*pi)-0.5*log (det(sigema1));hxw2=-0.5*(x-mean2)'*inv(sigema2)*(x-mean2)-2*log(2*pi)-0.5*log (det(sigema2));hxw3=-0.5*(x-mean3)'*inv(sigema3)*(x-mean3)-2*log(2*pi)-0.5*log (det(sigema3));%再计算含有风险因子的后验概率%r(1)=L(1,1)*(hxw1+hw1)+L(1,2)*(hxw2+hw2)+L(1,3)*(hxw3+hw3);r(2)=L(2,1)*(hxw1+hw1)+L(2,2)*(hxw2+hw2)+L(2,3)*(hxw3+hw3);r(3)=L(3,1)*(hxw1+hw1)+L(3,2)*(hxw2+hw2)+L(3,3)*(hxw3+hw3);%比较三类风险大小,属于风险最小的那一类%min=r(1);class=1;for j=1:1:3if r(j)<minmin=r(j);class=j;endend%验证分类结果的正确性%if (i<=50 & class~=1) | (i>50 & i<=100 & class~=2) | (i>100 & class~=3)fprintf('对于“判断第%d个数据属于第%d类”的分类是错误的!\n',i,class);elsefprintf('判断第%d个数据属于第%d类\n',i,class);endend三、实验结果与分析1.最小错误判别准则判断第1个数据属于第1类判断第2个数据属于第1类判断第3个数据属于第1类判断第4个数据属于第1类判断第5个数据属于第1类判断第6个数据属于第1类判断第7个数据属于第1类判断第8个数据属于第1类判断第9个数据属于第1类判断第10个数据属于第1类判断第11个数据属于第1类判断第12个数据属于第1类判断第13个数据属于第1类判断第14个数据属于第1类判断第15个数据属于第1类判断第16个数据属于第1类判断第17个数据属于第1类判断第18个数据属于第1类判断第19个数据属于第1类判断第20个数据属于第1类判断第21个数据属于第1类判断第22个数据属于第1类判断第23个数据属于第1类判断第24个数据属于第1类判断第25个数据属于第1类判断第26个数据属于第1类判断第27个数据属于第1类判断第28个数据属于第1类判断第29个数据属于第1类判断第30个数据属于第1类判断第31个数据属于第1类判断第32个数据属于第1类判断第33个数据属于第1类判断第34个数据属于第1类判断第35个数据属于第1类判断第36个数据属于第1类判断第37个数据属于第1类判断第38个数据属于第1类判断第39个数据属于第1类判断第40个数据属于第1类判断第41个数据属于第1类判断第42个数据属于第1类判断第43个数据属于第1类判断第44个数据属于第1类判断第45个数据属于第1类判断第46个数据属于第1类判断第47个数据属于第1类判断第48个数据属于第1类判断第49个数据属于第1类判断第50个数据属于第1类判断第51个数据属于第2类判断第52个数据属于第2类判断第53个数据属于第2类判断第54个数据属于第2类判断第55个数据属于第2类判断第56个数据属于第2类判断第57个数据属于第2类判断第58个数据属于第2类判断第59个数据属于第2类判断第60个数据属于第2类判断第61个数据属于第2类判断第62个数据属于第2类判断第63个数据属于第2类判断第64个数据属于第2类判断第65个数据属于第2类判断第66个数据属于第2类判断第67个数据属于第2类判断第68个数据属于第2类判断第69个数据属于第2类判断第70个数据属于第2类对于“判断第71个数据属于第3类”的分类是错误的!判断第72个数据属于第2类判断第73个数据属于第2类7判断第74个数据属于第2类判断第75个数据属于第2类判断第76个数据属于第2类判断第77个数据属于第2类判断第78个数据属于第2类判断第79个数据属于第2类判断第80个数据属于第2类判断第81个数据属于第2类判断第82个数据属于第2类判断第83个数据属于第2类对于“判断第84个数据属于第3类”的分类是错误的!判断第85个数据属于第2类判断第86个数据属于第2类判断第87个数据属于第2类判断第88个数据属于第2类判断第89个数据属于第2类判断第90个数据属于第2类判断第91个数据属于第2类判断第92个数据属于第2类判断第93个数据属于第2类判断第94个数据属于第2类判断第95个数据属于第2类判断第96个数据属于第2类判断第97个数据属于第2类判断第98个数据属于第2类判断第99个数据属于第2类判断第100个数据属于第2类判断第101个数据属于第3类判断第102个数据属于第3类判断第103个数据属于第3类判断第104个数据属于第3类判断第105个数据属于第3类判断第106个数据属于第3类判断第107个数据属于第3类判断第108个数据属于第3类判断第109个数据属于第3类判断第110个数据属于第3类判断第111个数据属于第3类判断第112个数据属于第3类判断第113个数据属于第3类判断第114个数据属于第3类判断第115个数据属于第3类判断第116个数据属于第3类判断第117个数据属于第3类判断第118个数据属于第3类判断第119个数据属于第3类判断第120个数据属于第3类判断第121个数据属于第3类判断第122个数据属于第3类判断第123个数据属于第3类判断第124个数据属于第3类判断第125个数据属于第3类判断第126个数据属于第3类判断第127个数据属于第3类判断第128个数据属于第3类判断第129个数据属于第3类判断第130个数据属于第3类判断第131个数据属于第3类对于“判断第132个数据属于第2类”的分类是错误的!判断第133个数据属于第3类对于“判断第134个数据属于第2类”的分类是错误的!判断第135个数据属于第3类判断第136个数据属于第3类判断第137个数据属于第3类判断第138个数据属于第3类判断第139个数据属于第3类判断第140个数据属于第3类判断第141个数据属于第3类判断第142个数据属于第3类判断第143个数据属于第3类判断第144个数据属于第3类判断第145个数据属于第3类判断第146个数据属于第3类判断第147个数据属于第3类判断第148个数据属于第3类判断第149个数据属于第3类判断第150个数据属于第3类9第一类中没有出现判决错误,第二、三类中出现了个别的错误,分类正确率较高,如果要提高正确率,可以选取更多的样本进行训练。