📄 irisrbf1.m
字号:
close all
clear
clc
load allirisdata.mat;
N1=40; %每一类中用来训练的样本数
N2=50-N1; %每一类中用来测试的样本数
Train=[IrisData(1:N1,:);IrisData(51:(50+N1),:);IrisData(101:(100+N1),:)]';
Test=[IrisData((N1+1):50,:);IrisData((51+N1):100,:);IrisData((101+N1):150,:)]';
TrainOut=[Label(1:N1);Label(51:(50+N1));Label(101:(100+N1))]';
TestOut=[Label((N1+1):50);Label((51+N1):100);Label((101+N1):150)]';
TrainNum=size(Train,2);
TestNum=size(Test,2);
InDim=size(IrisData,1);
ClusterNum=3;
Overlap=1.0;
RandomNum=round(rand(1,ClusterNum)*TrainNum);
Centers=Train(:,RandomNum);
NumberInClusters=zeros(ClusterNum,1);
IndexInClusters=zeros(ClusterNum,TrainNum);
while 1
NumberInClusters=zeros(ClusterNum,1);
IndexInClusters=zeros(ClusterNum,TrainNum);
OldCenters=Centers;
for i=1:TrainNum
AllDistance=dist(Centers',Train(:,i));
[MinDist,Pos]=min(AllDistance);
NumberInClusters(Pos)=NumberInClusters(Pos)+1;
IndexInClusters(Pos,NumberInClusters(Pos))=i;
end
for i=1:ClusterNum
Index=IndexInClusters(i,1:NumberInClusters(i));
Centers(:,i)=mean(Train(:,Index)')';
end
if Centers==OldCenters
break
end
end
AllDistances=dist(Centers',Centers);
Maximum=max(max(AllDistances));
for i=1:ClusterNum
AllDistances(i,i)=Maximum+1;
end
Spreads=Overlap*min(AllDistances)';
Distance=dist(Centers',Train);
SpreadsMat=repmat(Spreads,1,TrainNum);
HiddenUnitOut=radbas(Distance./SpreadsMat);
HiddenUnitOutEx=[HiddenUnitOut;ones(1,TrainNum)];
W2Ex=TrainOut*pinv(HiddenUnitOutEx);
W2=W2Ex(1:ClusterNum);
B2=W2Ex(ClusterNum+1);
%回判
TrainNNOut=W2*HiddenUnitOut+B2;
ErrInd1=find(round(TrainNNOut)~=TrainOut);
errorrate1=length(ErrInd1)/TrainNum;
disp('训练样本数')
disp(TrainNum)
disp('对训练样本的回判错误率为');
disp(errorrate1);
TestDistance=dist(Centers',Test);
TestSpreadsMat=repmat(Spreads,1,TestNum);
TestHiddenUnitOut=radbas(TestDistance./TestSpreadsMat);
TestNNOut=W2*TestHiddenUnitOut+B2;
ErrInd2=find(round(TestNNOut)~=TestOut);
errorrate2=length(ErrInd2)/TestNum;
disp('测试样本数')
disp(TestNum)
disp('对测试样本判断的错误率为');
disp(errorrate2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -