近邻法与剪辑近邻法
第六章 近邻法

P
P
*
最近邻与k-近邻法分类效果
最近邻
3-近邻
§6.1 近邻法原理及其决策规则
6.1.4. 近邻法中的几个问题
• 问题1:如何度量两个向量的相似性? • 各种距离度量
已知两个样本
X X
i
(X (X
, X i1
i2
, , X
in
)
jn
T
j
, X j1
, , X j2
)
T
① s阶明考夫斯基距离
d ij ( s )
|X
k 1
n
ik
X jk |
s
1/ s
② 绝对值距离(城市距离、棋盘距离) ③ 欧几里德距离 ④ 切比雪夫距离
d ij
m1
g(x)=0
x x
m2
最近邻分类器(nearest neighborhood classifier, nnc): 最小距离 分类器的一种极端的情况,以全部训练样本作为代表点, 计算测试样本与所有样本的距离,并以最近邻者的类别作 为决策。 最初的近邻法是由Cover和Hart于1968年提出的,随后得到 理论上深入的分析与研究,是非参数法中最重要的方法之 一。
i
• k-近邻一般采用k为奇数,跟投票表决一样,避免因两种票 数相等而难以决策。
§6.1.3 K近邻法
• 从样本点x开始生长,不断扩大区域,直到包含进k个训练 样本点为止,并且把测试样本点x的类别归为这最近的k个 训练样本点中出现频率最大的类别。
模式识别基础之近邻法

模式识别基础之近邻法近邻法是一种常用的模式识别方法,它通过测量不同对象间的相似性来进行分类。
本文将介绍近邻法的基本原理、应用领域以及优缺点。
一、基本原理近邻法是基于实例学习(instance-based learning)的一种算法。
它通过计算样本之间的距离或相似度来判断其归属类别。
简单来说,近邻法将新的样本与已有的样本进行比较,将其归类到与其最相似的样本所属的类别中。
在实际应用中,近邻法通常是通过计算样本之间的欧氏距离或余弦相似度来进行分类。
欧氏距离是指在坐标系中两点之间的直线距离,而余弦相似度是指两个向量之间的夹角的余弦值。
根据距离或相似度的大小,近邻法将样本进行分类。
二、应用领域1. 图像识别近邻法在图像识别领域有着广泛的应用。
通过计算图像的特征向量之间的相似度,可以实现图像分类、图像匹配等功能。
例如,当需要将一张未知图像分类到已知类别中时,可以通过计算未知图像与已知图像的特征向量之间的相似度来判断其归属类别。
2. 文本分类在文本分类任务中,近邻法也是一个常用的算法。
通过计算文本之间的相似度,可以实现文本的自动分类。
例如,当需要将一篇未知文本归类到已有类别中时,可以计算未知文本与已有文本之间的相似度,并将其归类到相似度最高的类别中。
3. 推荐系统近邻法在推荐系统中也得到了广泛的应用。
通过计算用户之间的兴趣相似度,可以为用户推荐符合其兴趣的物品。
例如,在电商平台上,通过计算用户购买记录或点击行为之间的相似度,可以为用户推荐与其兴趣相似的商品。
三、优缺点1. 优点近邻法具有以下优点:- 简单直观:近邻法的原理简单易懂,容易实现和解释。
- 非参数化:近邻法不对数据的分布做任何假设,适用于任何类型的数据。
- 灵活性强:近邻法适用于多种应用场景,可以根据实际需求进行定制。
2. 缺点近邻法也存在一些缺点:- 计算复杂度高:对于大规模的数据集,计算样本之间的距离或相似度可能会非常耗时。
- 依赖样本质量:近邻法受样本质量的影响较大,对于噪声数据或不均衡数据容易产生误分类。
模式识别(山东联盟)智慧树知到课后章节答案2023年下青岛大学

模式识别(山东联盟)智慧树知到课后章节答案2023年下青岛大学青岛大学第一章测试1.关于监督模式识别与非监督模式识别的描述正确的是答案:非监督模式识别对样本的分类结果是唯一的2.基于数据的方法适用于特征和类别关系不明确的情况答案:对3.下列关于模式识别的说法中,正确的是答案:模式可以看作对象的组成成分或影响因素间存在的规律性关系4.在模式识别中,样本的特征构成特征空间,特征数量越多越有利于分类答案:错5.在监督模式识别中,分类器的形式越复杂,对未知样本的分类精度就越高答案:错第二章测试1.下列关于最小风险的贝叶斯决策的说法中正确的有答案:条件风险反映了对于一个样本x采用某种决策时所带来的损失;最小风险的贝叶斯决策考虑到了不同的错误率所造成的不同损失;最小错误率的贝叶斯决策是最小风险的贝叶斯决策的特例2.我们在对某一模式x进行分类判别决策时,只需要算出它属于各类的条件风险就可以进行决策了。
答案:对3.下面关于贝叶斯分类器的说法中错误的是答案:贝叶斯分类器中的判别函数的形式是唯一的4.当各类的协方差矩阵相等时,分类面为超平面,并且与两类的中心连线垂直。
答案:错5.当各类的协方差矩阵不等时,决策面是超二次曲面。
答案:对第三章测试1.概率密度函数的估计的本质是根据训练数据来估计概率密度函数的形式和参数。
答案:对2.参数估计是已知概率密度的形式,而参数未知。
答案:对3.概率密度函数的参数估计需要一定数量的训练样本,样本越多,参数估计的结果越准确。
答案:对4.下面关于最大似然估计的说法中正确的是答案:在最大似然函数估计中,要估计的参数是一个确定的量。
;在最大似然估计中要求各个样本必须是独立抽取的。
;最大似然估计是在已知概率密度函数的形式,但是参数未知的情况下,利用训练样本来估计未知参数。
5.贝叶斯估计中是将未知的参数本身也看作一个随机变量,要做的是根据观测数据对参数的分布进行估计。
答案:对第四章测试1.多类问题的贝叶斯分类器中判别函数的数量与类别数量是有直接关系的。
模式识别名词解释

名词解释:1 样本:对任一个具体的事物,在这门课中都称为一个样本,它是一类事物的一个具体体现,它与模式这个概念联用,则模式表示一类事物的统称,而样本则是该类事物的一个具体体现。
2 模式:英语是pattern,表示一类事物,如印刷体A与手写体A属同一模式。
B与A则属于不同模式,而每一个具体的字母A、B则是它的模式的具体体现,称之为样本。
因此模式与样本共同使用时,样本是具体的事物,而模式是对同一类事物概念性的概况。
一个人的许多照片是这个人的许多样本,而这个人本身是一个模式。
3 模式类:这个词与模式联合使用,此时模式表示具体的事物,而模式类则是对这一类事物的概念性描述。
4 模式识别:人们在见到一个具体的物品时会分辨出它的类名,如方桌与圆桌都会归结为是桌子。
这是人们所具有的认识事物的功能,在这门课中就称为是模式识别。
具体的说是从具体事物辨别出它的概念。
这门课讨论的是让机器实现事物的分类,因此由机器实现模式识别。
这门课就是讨论机器认识事物的基本概念、基本方法。
5 分类器:用来识别具体事物的类别的系统称为分类器6 模式识别系统:用来实现对所见事物(样本)确定其类别的系统,也称为分类器。
7 特征:一个事件(样本)有若干属性称为特征,对属性要进行度量,一般有两种方法,一种是定量的,如长度、体积、重量等,可用具体的数量表示,但也可用粗略的方法表示,如一个物体可用“重”、“轻”、“中等”表示,前种方法为定量表示,而后种方法则是定性表示。
重与轻变成了一种离散的,或称符号性的表示,它们在数值上有内在的联系。
在本门课中一般偏重定量的表示。
8 特征向量:对一个具体事物(样本)往往可用其多个属性来描述,因此,描述该事物用了多个特征,将这些特征有序地排列起来,如一个桌子用长、宽、高三种属性的度量值有序地排列起来,就成为一个向量。
这种向量就称为特征向量。
每个属性称为它的一个分量,或一个元素。
9 维数:一个向量具有的分量数目,如向量,则该向量的维数是3。
近邻法

则有Bayes条件错误率
P * (e | x) 1 P(m | x)
因此 P* P * (e | x) p ( x) dx
对于两类问题,由前面公式
N
lim PN (e | x) 1 P (i | x)
2 i 1
2
4.5.1最近邻法 二、最近邻法的错误率分析
4.5.1最近邻法 二、最近邻法的错误率分析
图4.14示出近邻法的上下界。一般地,最 近邻法的错误率落在图中的阴影区域 中。 c类别最近邻
分类器可能 渐近误差率
4.5.1最近邻法 二、最近邻法的错误率分析
4.5.1最近邻法 二、最近邻法的错误率分析
可以证明以下关系式成立
c P* P P * (2 P*) c 1
其中P*为贝叶斯错误率,c为类数。
上式实际上给出了最近邻法渐近平均错 误率P的范围,指出它在Bayes错误率P* c 和 P * (2 P*) 之间。 c 1
4.5.1最近邻法 二、最近邻法的错误率分析
c i 1
知样本x,只要比较x与 N N i 个已知类 别的样本之间的欧氏距离,并决策x与离 它最近的样本同类。
4.5.1最近邻法
二、最近邻法的错误率分析
近邻法的错误率很难计算,因为训练样本集的 数量总是有限的,有时多一个少一个训练样本 对测试样本分类的结果影响很大。如图中所示
4.5.1最近邻法 二、最近邻法的错误率分析
P* P * (e | x) p(x)dx [1 P(m | x)] p(x)dx 0
此时P = P*。
4.5.1最近邻法 二、最近邻法的错误率分析
KNN的改进算法、剪辑近邻法与压缩近邻法的MATLAB实现

KNN的改进算法、剪辑近邻法与压缩近邻法的MATLAB实现KNN(K - Nearest Neighbor)分类算法是模式识别领域的⼀个简单分类⽅法。
KNN算法的核⼼思想是,如果⼀个样本在特征空间中的k个最相邻的样本中的⼤多数属于某⼀个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。
该⽅法在确定分类决策上只依据最邻近的k个样本的类别来决定待分样本所属的类别。
⾸先,knn算法⽐较适合只有两类样本的简单分类问题,这样当n为奇数时就可以少数服从多数达到分类⽬的。
但是当类别数量⼤于2时,设定n为奇数已经不能避免投票数量相同的问题。
这种情况在我的理解下有两种解决思路:思路A:当对运算效率要求较⾼⽽对分类结果要求不⾼时,可以选择投票数量相同的样本类别中先被查询到的⼀个;思路B:当对运算效率要求不⾼⽽对分类结果要求较⾼时,可以改变k值再次进⾏投票,例如,在k0=5时出现了投票数量相同的样本类别,可以令k1=k0-1再次进⾏判断,若仍存在投票数量相同的样本类别,可以继续令k2=k1-1再次进⾏判断,这样在km=1时会得到唯⼀答案。
这⾥不建议增⼤k值再次投票,因为我担⼼会陷⼊更⿇烦的情况。
KNN作为机器学习的⼊门算法,存在效率低、过度依赖训练数据的缺点,并在处理较⼤数据时可能引起维数灾难。
需要谨慎考虑后再选择。
在普通的KNN算法下,当k个最近邻样本进⾏投票时,存在投票数量相同的样本类别,即MaxValue的长度不为1时程序会报错。
根据思路A,可将MaxValue改为MaxValue(1)。
下⾯的算法在这⾥根据思路B进⾏改进,具体⽅法是减⼩k值递归调⽤knn函数。
同时为了满⾜压缩近邻法的需要,处理了当训练集数据不⾜K个时出现的问题。
解决⽅法是,当训练集数据不⾜K个时,令K为训练集数据的个数。
改进后的KNN算法:function y = knn(trainData, sample_label, testData, k)%KNN k-Nearest Neighbors Algorithm.%% INPUT: trainData: training sample Data, M-by-N matrix.% sample_label: training sample labels, 1-by-N row vector.% testData: testing sample Data, M-by-N_test matrix.% K: the k in k-Nearest Neighbors%% OUTPUT: y : predicted labels, 1-by-N_test row vector.%% Author: Sophia_Dzif length(trainData) < kk = length(trainData);end[M_train, N] = size(trainData);[M_test, ~] = size(testData);%calculate the distance between testData and trainDataDis = zeros(M_train,1);class_test = zeros(M_test,1);for n = 1:M_testfor i = 1:M_traindistance1 = 0;for j = 1:Ndistance1 = (testData(n,j) - trainData(i,j)).^2 + distance1;endDis(i,1) = distance1.^0.5;end%find the k nearest neighbor[~, index] = sort(Dis);temp=1:k;for i = 1:ktemp(i) = sample_label(index(i));endtable = tabulate(temp);MaxCount=max(table(:,2,:));[row,~]=find(table(:,2,:)==MaxCount);MaxValue=table(row,1);if length(MaxValue) ~= 1MaxValue = knn(trainData, sample_label, testData(n,:), k-1);endclass_test(n) = MaxValue;endy = class_test;下⾯是剪辑近邻法与压缩近邻法的MATLAB实现:⾸先设定参数:%% parameter determinationclear;% dataset parameterdataset_len=400;dataset_proportion=[8,2];attribute_num=2;% knn parameterk=5;% edit parameterm=4;s=4;准备数据,这⾥使⽤MATLAB⽣成服从正态分布的三组数据,它们的均值不同:%% dataset loaddataset_class_len=fix(dataset_len/3);dataset=[4*ones(dataset_class_len,1)+randn(dataset_class_len,1),... % class A attribute x2*ones(dataset_class_len,1)+randn(dataset_class_len,1),... % class A attribute y1*ones(dataset_class_len,1); % class A label2*ones(dataset_class_len,1)+randn(dataset_class_len,1),... % class B attribute x4*ones(dataset_class_len,1)+randn(dataset_class_len,1),... % class B attribute y2*ones(dataset_class_len,1); % class B label5*ones(dataset_class_len,1)+randn(dataset_class_len,1),... % class C attribute x5*ones(dataset_class_len,1)+randn(dataset_class_len,1),... % class C attribute y3*ones(dataset_class_len,1) % class C label];将数据划分为训练集与测试集:%% preprocess data% order disruptrand_class_index=randperm(size(dataset,1));dataset=dataset(rand_class_index,:);% train dataset and test datasetdataset_train_len=fix(dataset_len*(dataset_proportion(1)/sum(dataset_proportion)));dataset_train=dataset(1:dataset_train_len,:);dataset_test=dataset(dataset_train_len+1:end,:);% attribute and labeldataset_train_attribute=dataset_train(:,1:attribute_num);dataset_train_label=dataset_train(:,attribute_num+1);dataset_test_attribute=dataset_test(:,1:attribute_num);dataset_test_label=dataset_test(:,attribute_num+1);将训练集的样本可视化:%% train dataset visualizationdata_vis=dataset_train;figure(1);for n=1:length(data_vis)X=data_vis(n,1);Y=data_vis(n,2);if data_vis(n,attribute_num+1)==1color='red';elseif data_vis(n,attribute_num+1)==2color='green';elseif data_vis(n,attribute_num+1)==3color='blue';endplot(X,Y,'+','Color',color);hold on;end图1 未经处理的训练集样本分类:%% knnclassification_result=knn(dataset_train_attribute,dataset_train_label,dataset_test_attribute,k);计算根据此训练集的分类正确率为:0.8481:%% correct rateerror_count=0;for n=1:length(classification_result)if dataset_test_label(n)~=classification_result(n)error_count=error_count+1;endendcorrect_rate=1-error_count/length(classification_result);剪辑近邻法:剪辑近邻法的基本思想是,当不同类别的样本在分布上有交迭部分的,分类的错误率主要来⾃处于交迭区中的样本,通过剪辑去除⼤部分交迭区中的样本。
模式识别思考题答案

X ( NT ) 两部分,这两部分没有公共元素,它们的样本数各为 NR 和 NT,NR+NT=N。利用参照
集X
( NR)
中的样本 y1 , y2 ,, y NR 采用最近邻规则对已知类别的测试集 X
( NT )
中的每个样
x1 , x2 ,, xNT 进行分类,剪辑掉 X ( NT ) 中被错误分类的样本。
k=10, x k =x 2 ,d ( x k ) =w(k)' xk =2>0, w(11)= w(10)
k=11, x k =x3 ,d ( x k ) =w(k)' xk =0, w(12)= w(11)+x3 (2, 3, 1,2)
k=12, x k =x 4 ,d ( x k ) =w(k)' xk =1>0, w(13)= w(12) k=13, x k =x5 ,d ( x k ) =w(k)' xk =-1<0, w(14)= w(13)+x 5 (2, 3, 2)
x2
W2
+ W1
x
Hale Waihona Puke 1d 23 (x)=2x 2
-
W3
+
-
d13 ( x) 2 x1 x2 1
五、以下列两类模式为样本,用感知器算法求其判决函数。 (令 w(1) = (-1,-2,-2)T) 1:{(0,0,0)’, (1,0,0)’, (1,0,1)’, (1,1,0)’,} 2:{(0,0,1)’, (0,1,1)’, (0,1,0)’, (1,1,1)’,} 解: (1)将训练样本分量增广化及符号规范化,将训练样本增加一个分量 1,且把来自 w2 类的 训练样本的各分量乘以-1,则得到训练模式集:
模式识别(6)近邻法

§6.2 k-近邻法
从样本点x开始生长,不断扩大区域,直到包含进k个训练 样本点为止,并且把测试样本点x的类别归为这最近的k个 训练样本点中出现频率最大的类别。
k-近邻法的错误率
最近邻法和k-近邻法的错误率上下界都是在一倍到两倍贝 叶斯决策方法的错误率范围内。
在k →∞的条件下,k-近邻法的错误率要低于最近邻法。 在k →∞的条件下,k-近邻法的错误率等于贝叶斯误差率。
1按近邻法分类这两类最多有多少个分界面2画出实际用到的分界面b2a2b3b4b1a3a1?按最近邻法对任意两个由不同类别的训练样本构成的样本对如果它们有可能成为测试样本的近邻则它们构成一组最小距离分类器它们之间的中垂面就是分界面因此由三个a类与四个b类训练样本可能构成的分界面最大数量为3412
模式识别
➢从以上讨论可以看出,当N→∞时,最近邻法的渐近平均错 误率的下界是贝叶斯错误率,这发生在样本对某类别后验概率 处处为1的情况或各类后验概率相等的情况。
最近邻法的错误率
最近邻法的错误率
最近邻法的错误率高于贝叶斯错误率,可以证明
以下关系式成立:
P* P P*(2 C P*) C 1
最近邻法的错误率
有以下两种例外情况△P=0:
P(ω1|X)=1 P(ω1|X)=P(ω2|X)=1/2。
最近邻法的错误率
请想一下,什么情况下P(ω1|X)=1或P(ω2|X)=1? P(ω1|X)= P(ω2|X)会出现什么什么情况?
➢一般来说,在某一类样本分布密集区,某一类的后验概率接 近或等于1。此时,基于最小错误率贝叶斯决策基本没错,而 近邻法出错可能也很小。 ➢而后验概率近似相等一般出现在两类分布的交界处,此时分 类没有依据,因此基于最小错误率的贝叶斯决策也无能为力了, 近邻法也就与贝叶斯决策平起平坐了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云南大学数学与统计学实验教学中心实验报告一、实验目的能根据给出的训练集与测试集,用近邻法,k近邻法与剪辑近邻法, 重复剪辑近邻法给出测试集的分类结果并分别计算其错误率。
二、实验内容画出近邻法的程序框图,对给定的分别存放在文件“riply_trn.mat”和”riply_tst.mat”中的两类样本训练集250个测试集1000个,试用近邻法,k近邻法与剪辑近邻法, 重复剪辑近邻法给出测试集的分类结果并分别计算其错误率。
三、实验环境Windows XPMatlab6.5四、实验过程一、程序框图:二、实验相关代码:(1)最近邻法%计算错误率函数function [P]=ZQL_func(ys,yr)load riply_tst;yr=y;n=size(ys,2);t=0;for i=1:nif ys(i)-yr(i)==0t=t+1;endendP=1-t/n;%最近邻函数文件function [ypd]=ZJL_func(Xtr,ytr,Xts,yts)[m1,n1]=size(Xtr);[m2,n2]=size(Xts);d=zeros(1,n1);ypd=zeros(1,n2);for i=1:n2for j=1:n1d(j)=(Xts(1,i)-Xtr(1,j))^2+(Xts(2,i)-Xtr(2,j))^2; %欧式距离endmin=d(1);r=1;for t=2:n1if d(t)<=minmin=d(t); %计算最小距离(并保存下标值)r=t;endendypd(i)=ytr(r);end%最近邻的m文件load riply_trn;Xtr=X;ytr=y;load riply_tst;Xts=X;yts=y;[m,n]=size(Xts);yp=zeros(1,n);yp=ZJL_func(Xtr,ytr,Xts,yts);p=ZQL_func(yp,yts)(1)运行结果:(注:由于分类结果数据过于庞大在此不列出,只将错误率给出)p =0.1500(2)k近邻法% k近邻法函数文件function [P]= KJL(k)load riply_trn;Xtr=X;ytr=y;[m1,n1]=size(Xtr);load riply_tst;Xts=X;yts=y;[m2,n2]=size(Xts);d=zeros(1,n1);ypd=zeros(1,n2);for i=1:n2for j=1:n1d(j)=(Xts(1,i)-Xtr(1,j))^2+(Xts(2,i)-Xtr(2,j))^2;enda=0;b=0;for t=1:n1for r=t:n1if d(t)>=d(r)a=d(t);d(t)=d(r);d(r)=a;b=ytr(t);ytr(t)=ytr(r); %对距离进行排序ytr(r)=b;endendendp=0;q=0;for s=1:kif ytr(s)==1p=p+1;elseq=q+1; %寻找最近的k个来判断类别endendif p>qypd(i)=1;elseypd(i)=2;endendZQL_func(ypd,yts)%根据作图找使得错误率达到最小的k值k=25:120;k1=[44,54];P2=KJL(k);figure(1),plot(k,P2(:))hold onplot(k1,min(P2(:)),'*r')hold off得到图形如下:从图中可看出当k值在43附近能使得错误率达到最小,约为0.079。
(3)剪辑近邻法:%剪辑法函数文件:function [Xbz,ybz,n]=JJF_func(Xjs,yjs,Xxs,yxs)[mj,nj]=size(Xjs);[mx,nx]=size(Xxs);d=zeros(1,nj);k=1;i=1;r=0;min=0;n=0;while k<=nxfor j=1:njd(j)=(Xxs(1,i)-Xjs(1,j))^2+(Xxs(2,i)-Xjs(2,j))^2;endmin=d(1);for t=2:njif d(t)<=minmin=d(t);r=t;endendif yxs(i)-yjs(r)==0i=i+1;elsefor j=i:nxXxs(i)=Xxs(i+1); %剪辑(通过用后面的值覆盖前面的值来实现)yxs(i)=yxs(i+1);endn=nx-1;endk=k+1;endXbz=zeros(mx,n);ybz=zeros(1,n);for i=1:nXbz(:,i)=Xxs(:,i);ybz(i)=yxs(i);end%剪辑法m文件:load riply_trn;Xtr=X;ytr=y;[m1,n1]=size(Xtr);load riply_tst;Xts=X;yts=y;%训练集的分类比例为2:3Xjs1=zeros(m1,n1);yjs1=zeros(1,n1);Xxs1=zeros(m1,n1);yxs1=zeros(1,n1);k=1;t=1;s=0;for i=1:n1s=rand;if s<=0.4Xjs1(:,k)=Xtr(:,i); %划分样本yjs1(k)=ytr(i);k=k+1;elseXxs1(:,t)=Xtr(:,i);yxs1(t)=ytr(i);t=t+1;endendXjs=zeros(m1,k);yjs=zeros(1,k);Xxs=zeros(m1,t);yxs=zeros(1,t);for i=1:kXjs(:,i)=Xjs1(:,i);yjs(i)=yjs1(i);endfor i=1:tXxs(:,i)=Xxs1(:,i);yxs(i)=yxs1(i);end[Xbz,ybz]=JJF_func(Xjs,yjs,Xxs,yxs);ypd=ZJL_func(Xtr,ytr,Xts,yts); %调用最近邻函数文件来判断类别P=ZQL_func(ypd,yts)剪辑法所得结果:在将样本数据以2:3的比例进行“参考集”与“考试集”的划分,经过数次的重复运行(因为是随机分类故而多运行几次从而体现出规律来)后的到得最小错误率为:P = 0.0830;自己将划分比例进行了调整,发现在比例为4:5附近的时候错误率达到最小,为P =0.0770,而比例比这大或小的时候错误率均高于0.0770(4)重复剪辑法:%重复剪辑法函数文件:(把样本分为5类)function [X,Y,t]=CFJJ_func(Xtr,ytr)[m,n]=size(Xtr);x1=zeros(m,n);y1=zeros(1,n);x2=zeros(m,n);y2=zeros(1,n);x3=zeros(m,n);y3=zeros(1,n);x4=zeros(m,n);y4=zeros(1,n);x5=zeros(m,n);y5=zeros(1,n);t1=0;t2=0;t3=0;t4=0;t5=0;for i=1:nt=rand;if t<=0.1t1=t1+1;x1(:,t1)=Xtr(:,i);y1(t1)=ytr(i);elseif t<=0.3t2=t2+1;x2(:,t2)=Xtr(:,i);y2(t2)=ytr(i);elseif t<=0.5t3=t3+1;x3(:,t3)=Xtr(:,i);y3(t3)=ytr(i);elseif t<=0.6t4=t4+1;x4(:,t4)=Xtr(:,i);y4(t4)=ytr(i);elset5=t5+1;x5(:,t5)=Xtr(:,i);y5(t5)=ytr(i);endendx1=x1(:,1:t1);y1=y1(:,1:t1);x2=x2(:,1:t2);y2=y2(:,1:t2);x3=x3(:,1:t3);y3=y3(:,1:t3);x4=x4(:,1:t4);y4=y4(:,1:t4);x5=x5(:,1:t5);y5=y5(:,1:t5);X=[x1,x2,x3,x4,x5];Y=[y1,y2,y3,y4,y5];t=[t1,t2,t3,t4,t5];%重复剪辑法m文件:load riply_trn;Xtr=X;ytr=y;load riply_tst;Xts=X;yts=y;p=zeros(1,5);num=0;st=0;t=0;[m,n]=size(Xtr);[m1,n1]=size(Xts);[A,ys,t]=CFJJ_func(Xtr,ytr);st=sum(t);while st~=num %控制重复剪辑的结束语句(即样本不再被“剪”去)st=num;S=mat2cell(A,[m],[t]); %将样本划分为5个子集Y=mat2cell(ys,[1],[t]);for i=1:5if i+1>5c=mod(i+1,5);elsec=i+1;endif size(S{1,c},2)>0[S{1,i},Y{1,i},p(i)]=JJF_func(S{1,c},Y{1,c},S{1,i},Y{1,i});endendS=cell2mat(S); %将样本又归为一个集合Y=cell2mat(Y);[A,ys,t]=CFJJ_func(S,Y);num=sum(p);endG=[S;Y]ypd=ZJL_func(S,Y,Xts,yts);P=ZQL_func(ypd,yts)实验结果:自己将代码运行数次,分析规律得到一个错误率相对较低的时候剪辑剩下的样本集及其对应的类别为:(大约还剩下28个样本时候错分的概率最小)G =0.0976 -0.8415 -0.1913 -0.6803 0.7577 0.6591 0.3727 0.4667 0.77710.7771 0.6719 -0.1913 -0.6803 0.7577 0.6591 -0.5541 -0.3665 0.06141.0000 1.0000 1.0000 1.00002.0000 1.0000 1.0000 1.0000 1.00000.3971 0.7107 0.5720 0.7771 0.3341 0.6483 0.5795 0.0763 0.51540.7107 0.7107 0.5720 0.3341 0.3727 0.6483 0.5795 0.3505 0.51541.00002.0000 1.0000 1.0000 1.0000 1.0000 2.0000 1.0000 1.0000-0.5976 0.7577 0.0763 0.6320 -0.9859 0.2104 -0.5745 0.0926 0.63710.2551 0.6057 0.0763 0.6320 -0.9859 0.2104 0.1862 0.0926 0.06141.0000 1.0000 1.00002.0000 2.0000 1.0000 1.0000 1.0000 1.00000.50160.35341.0000错误率最小,为0.0812。