%Script file: Iris classification using Matlab's RBF routines. numiters=20; %Number of widths of Gaussians numtrain=120; %Number of training points to use load IrisData %From earlier, loads X and Y, 150 points eg=0.1; %Error goal sp=linspace(0.05,1.6,numiters); %Gaussian Widths [NumPoints,Dim]=size(X); temp=randperm(NumPoints); P=X(temp(1:numtrain),:)'; T=Y(temp(1:numtrain),:)'; warning off %We expect some warnings about invertibility for i=1:numiters %print the iteration so you can keep track: i net=newrb(P,T,eg,sp(i)); z=sim(net,X'); e(i)=0; [c(i),b]=size(net.IW{1}); %c is the number of weights used for k=1:150 [x,j]=max(z(:,k)); if Y(k,j)~=1 e(i)=e(i)+1; %e is the error in classification end end W(i)=max(max(abs(net.LW{2,1}))); %Max weight size end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Plotting routines %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(1) plot3(X(1:50,1),X(1:50,2),X(1:50,3),'r*') hold on plot3(X(51:100,1),X(51:100,2),X(51:100,3),'b^') plot3(X(101:150,1),X(101:150,2),X(101:150,3),'go') hold off figure(2) plot(sp,e) title('Error versus Gaussian Width') figure(3) plot(sp,c) title('Number of centers from OLS versus Gaussian Width'); figure(4) semilogy(sp,W) title('Maximum Weight versus Gaussian Width');