Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 3

%% clasificare alcoolici-nonalcoolici

clear all
close all
load('nealcoolici.mat')
load('alcoolici.mat')

%% =================
data=[FFa;FFc];
dim_data=size(data);%
dim_F=size(FFa);
etichete = [];
for k = 1:dim_data(1)
if k<=dim_F(1)
etichete= [etichete; 'A'];% focal
else
etichete= [etichete; 'C'];% nefocal
end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%================================
%%%Create a 10-fold cross-validation to compute classification error.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%================================
%Indices = crossvalind('Kfold', N, K)
% returns randomly generated indices for a K-fold cross-validation of N
observations.
indici = crossvalind('Kfold',etichete,10);
numar_esantioane=length(etichete);
strArray = java_array('java.lang.String',numar_esantioane);
strArray(1:numar_esantioane/2) = java.lang.String('X');
strArray((numar_esantioane/2)+1:numar_esantioane) = java.lang.String('Y');
cellArray = cell(strArray);%etichetele etichete sub forma de cell
% classperf Evaluate performance of classifier

% CLASSPERF tracks performance measurements during the validation


process
% of classifiers. CLASSPERF creates and updates a CP object which
% accumulates the results of the classifier. Classification performance
% results can be accessed using the GET function or as fields in
% structures. Some of these performance parameters are ErrorRate,
% CorrectRate, ErrorDistributionByClass, Sensitivity and Specificity.
% CLASSPERF without input arguments displays all the available
% performance parameters.
% classperf(CP, classout, testidx)
%% clasificare LDA
cp = classperf(cellArray);
for i = 1:10
test = (indici == i); train = ~test;
[class,err(i)]= classify(data(test,:),data(train,:),cellArray(train,:));%
clasificare LDA
classperf(cp,class,test);
rata_clasificare_test(i)=cp.CorrectRate;
sensitivitate(i)=cp.Sensitivity;
specificitate(i)=cp.Specificity;
end
medie_rata_clasificare_test=mean(rata_clasificare_test);% medierea pe toate
situatiile
medie_sensitivitate=mean(sensitivitate);
medie_specificitate=mean(specificitate);
%% clasificare QDA
cp = classperf(cellArray);
for i = 1:10
test = (indici == i); train = ~test;
[class,err(i)]=
classify(data(test,:),data(train,:),cellArray(train,:),'quadratic');
classperf(cp,class,test);
q_rata_clasificare_test(i)=cp.CorrectRate;
q_sensitivitate(i)=cp.Sensitivity;
q_specificitate(i)=cp.Specificity;
end
q_medie_rata_clasificare_test=mean(q_rata_clasificare_test);
q_medie_sensitivitate=mean(q_sensitivitate);
q_medie_specificitate=mean(q_specificitate);
%% clasificare mahalanobis
cp = classperf(cellArray);
for i = 1:10
test = (indici == i); train = ~test;
[class,err(i)]=
classify(data(test,:),data(train,:),cellArray(train,:),'mahalanobis');
classperf(cp,class,test);
m_rata_clasificare_test(i)=cp.CorrectRate;
m_sensitivitate(i)=cp.Sensitivity;
m_specificitate(i)=cp.Specificity;
end
m_medie_rata_clasificare_test=mean(m_rata_clasificare_test);
m_medie_sensitivitate=mean(m_sensitivitate);
m_medie_specificitate=mean(m_specificitate);
%% KNN cu fitcknn
cp = classperf(cellArray);
% Perform the classification using the k-nearest neighbor
classifier.
% Cross-validate the model 10 times. After each cross-validation
run, update the classifier performance object with the results.
for i = 1:10
test = (indici== i); train= ~test;
mdl = fitcknn(data(train,:),cellArray(train),'NumNeighbors',5);% s-a rulat
pt 2 vecini deoarece performantele sunt f asemanatoare cu 1, 2, 3, 4,5 vecini, asa
cum ar fi codul daca s-ar lasa comentariile
predictions = predict(mdl,data(test,:));
classperf(cp,predictions,test);
KNN_rata_clasificare(i)=cp.CorrectRate;
KNN_sensitivitate(i)=cp.Sensitivity;
KNN_specificitate(i)=cp.Specificity;
end
KNN_medie_rata_clasificare_test=mean(KNN_rata_clasificare(1,:));
KNN_medie_sensitivitate=mean(KNN_sensitivitate(1,:));
KNN_medie_specificitate=mean(KNN_specificitate(1,:));
%% ===========
%% scriere in Excel
% incearca sa intelegi cum se face acest lucru, din ceea ce e daja facut
% cand vei rula pe alte situatii, sa ai grija sa vezi cum dai sintaxa ca sa
% nu se suprascrie si sa fie convenabil de lucrat in respectivul fisier Excel

% pentru fiecare situtie trebuie schimbata celula de introducere a rezultatelor,


% adica pe ultimul rand in loc de b7 cat este acum pentru situatia in care a fost
facuta clasificarea pentr fisier 0005, se va scrie o celula convenabila coresp
fisierului rulat

d={'medie_rata_clasificare_test',
'q_medie_rata_clasificare_test','m_medie_rata_clasificare_test',
'KNN_medie_rata_clasificare_test','medie_sensitivitate', 'q_medie_sensitivitate',
'm_sensitivitate','KNN_medie_sensitivitate', 'medie_specificitate',
'q_medie_specificitate', 'm_medie_specificitate','KNN_medie_specificitate'};
xlswrite('clasificare_alcoolici.xlsx',d,'clasificare_S1','b2');
xlswrite('clasificare_alcoolici.xlsx',[medie_rata_clasificare_test
q_medie_rata_clasificare_test m_medie_rata_clasificare_test
KNN_medie_rata_clasificare_test medie_sensitivitate q_medie_sensitivitate
m_medie_sensitivitate KNN_medie_sensitivitate medie_specificitate
q_medie_specificitate m_medie_specificitate
KNN_medie_specificitate],'clasificare_S1','b4');

You might also like