*I need help on how to run this I have the saved data but I cant figure which pa
ID: 1766073 • Letter: #
Question
*I need help on how to run this I have the saved data but I cant figure which parameters to invoke*
function [accuracy] = lab2ldf(TrainingFactor, set1, set2,a,nu)
%Function can select Datasets A and B, A and C, or B and C
% 'a' is the initial weight vector, 'nu' is learning rate
load irisdata.mat
%Initialize Dataset A, B, and C
A=irisdata_features(1:50,2:3);
B=irisdata_features(51:100,2:3);
C=irisdata_features(101:150,2:3);
%Determine Training Set #1
if set1 == 'A'
Dataset1= A;
elseif set1 == 'B'
Dataset1 = B;
elseif set1 == 'C'
Dataset1 = C;
end
%Determine Training Set #2
if set2 == 'A'
Dataset2= A;
elseif set2 == 'B'
Dataset2 = B;
elseif set2 == 'C'
Dataset2 = C;
end
trainSize=TrainingFactor*50;
testSize=50-trainSize;
Train1=Dataset1(1:trainSize,1:2);
Train2=Dataset2(1:trainSize,1:2);
Test1=Dataset1((trainSize+1):50,1:2);
Test2=Dataset2((trainSize+1):50,1:2);
%Construct y=[1 x2 x3]' and normalize it
y=ones(3,trainSize*2);
y(2:3,1:trainSize)=Train1';
y(2:3,(trainSize+1):trainSize*2)=(-1)*Train2';
y(1,(trainSize+1):trainSize*2) = (-1)*y(1,(trainSize+1):trainSize*2);
DJp = zeros(3,1);
g=(a')*y;
iterations=[1:1:300];
perceptron=zeros(3,trainSize);
for i=1:300
count=0;
for j=1:2*trainSize
if g(j) <= 0
DJp=DJp-y(1:3,j);
count=count+1; %Counts the number of misclassifications
end
end
perceptron(1:3,i)=DJp;
missrate=(count/trainSize)*100;
a=a-nu*DJp;
g=a'*y;
if (abs(nu*DJp) <= 0)
break;
end
end
figure;
plot(iterations,perceptron(1,:));
hold on;
plot(iterations,perceptron(2,:));
hold on;
plot(iterations,perceptron(3,:));
hold on; grid;
xlabel('Number of Iterations');
ylabel('Perceptron Criterion DJp(a)');
legend('wo','w1','w2');
disp('Number of iterations to convergence');
i
disp('Misclassification rate at final iteration');
missrate
%Reconstruct matrix y so it contains test data instead of traning data
y=ones(3,testSize*2);
y(2:3,1:testSize)=Test1';
y(2:3,(testSize+1):testSize*2)=(-1)*Test2';
y(1,(testSize+1):testSize*2) = (-1)*y(1,(testSize+1):testSize*2);
g=(a')*y;
count=0;
%Find the number of misclassifications using the test data
for i=1:2*testSize
if g(i) <= 0
count=count+1;
end
end
accuracy=((testSize-count)/testSize)*100;
disp('Classification accuracy for test data');
accuracy
disp('Final Weight Vector a');
a
disp('Slope m of boundary line');
m=-a(2,1)/a(3,1)
disp('Y inercept b of boundary line');
b=-a(1,1)/a(3,1)
figure;
fplot (@(x)m*x+b, [0 6]);
hold;
for i=1:trainSize
scatter ( Train2 (i ,1) ,Train2 (i ,2) ,10 ,[0 0 1],'*') ;% blue
scatter ( Train1 (i ,1) ,Train1 (i ,2) ,10, [1 0 0],'o') ;% Red
end
if set1 == 'A' && set2 == 'B'
legend('Boundary Line','Iris Setosa','Iris Versicolor');
end
if set1 == 'B' && set2 == 'C'
legend('Boundary Line','Iris Versicolor','Iris Virginica');
end
if set1 == 'A' && set2 == 'C'
legend('Boundary Line','Iris Setosa','Iris Virginica');
end
xlabel('Sepal Width (cm)');
ylabel('Petal Length (cm)');
hold on; grid;
Explanation / Answer
Pl. replace the first line load irisdata.mat with following code
**********************************************************************************************************
load fisheriris.mat
%Initialize Dataset A, B, and C
NumObs = size(meas,1);
ObsNames = strcat({'Obs'},num2str((1:NumObs)','%d'));
irisdata_features = dataset({nominal(species),'species'},...
{meas,'SL','SW','PL','PW'},...
'obsnames',ObsNames);
irisdata_features = set(irisdata_features,'Description','Fisher''s Iris Data')
**********************************************************************************************************
Now write a script as given below in the same path of the above code as follows:
****************************************************************************
close all,
clear all,
clc,
[accuracy] = lab2ldf(0.5, 'A', 'B',0.3,0.2)
*********************************************************************************************
Training Factor -> Between 0 and 1
Set A, B or C optional,
a as initial weigth factor and may be zero
nu - Learning rate between 0 and 1.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.