Untitled
Never
%projekt SNN 2012 %klasyfikator o 3 neuronach wyjściowych dla 3 klas clear; clc; dane = load('SNN_A.TXT'); test = load('SNN_B.TXT'); tabela = zeros(10,7); %--czy_trenowac=0 -> normalne działanie %--czy_trenowac=1 -> wczytanie wcześniej zapisanej sieci czy_trenowac=1; if czy_trenowac==0; load('siec.mat', 'siec'); end; dane=dane'; test=test'; %--poniższą linię odkomentować by testować na zbiorze uczącym-- %test=dane; wart_klasy=0.8; % utworzenie klas dane(3:5,:)=[wart_klasy*(dane(3,:)==1)+0.1;wart_klasy*(dane(3,:)==2)+0.1; wart_klasy*(dane(3,:)==3)+0.1]; test(3:5,:)=[wart_klasy*(test(3,:)==1)+0.1;wart_klasy*(test(3,:)==2)+0.1; wart_klasy*(test(3,:)==3)+0.1]; wart_klasy=wart_klasy+0.1; margines_gorny=0.6*(wart_klasy); margines_dolny=0.4*(wart_klasy); indx_cl1=find(dane(3,:)>=margines_gorny); indx_cl2=find(dane(4,:)>=margines_gorny); indx_cl3=find(dane(5,:)>=margines_gorny); %wizualizacja zbioru uczącego % figure(1); % plot(dane(1,indx_cl1),dane(2,indx_cl1),'ro'); % hold on; % plot(dane(1,indx_cl2),dane(2,indx_cl2),'go'); % plot(dane(1,indx_cl3),dane(2,indx_cl3),'bo'); % hold off; % legend("klasa 1","klasa 2","klasa 3"); %wartości min i max zbioru uczącego we1_min=min(dane(1,:)); we1_max=max(dane(1,:)); we2_min=min(dane(2,:)); we2_max=max(dane(2,:)); for l=4:14 if czy_trenowac==1; %utworzenie sieci neuronowej siec=newff([we1_min we1_max; we2_min we2_max], [l 3], {'logsig' 'logsig'}, 'traingd'); siec.trainParam.goal=0.01; siec.trainParam.epochs=100; %inicjalizacja wag wg Nguyena-Widrowa initnw(siec, 1); initnw(siec, 2); %uczenie alg. BP siec=train(siec, [dane(1,:); dane(2,:)], dane(3:5,:)); %uczenie alg. LM siec.trainFcn = 'trainlm'; siec.trainParam.epochs=200; siec=train(siec, [dane(1,:); dane(2,:)], dane(3:5,:)); save('siec.mat', 'siec'); end; %indeksy dla zbioru testowego dane_check=test(1:2,:); indx_cl1_test=find(test(3,:)>=margines_gorny); indx_cl2_test=find(test(4,:)>=margines_gorny); indx_cl3_test=find(test(5,:)>=margines_gorny); %wizualizacja zbioru testowego % figure(2); % plot(test(1,indx_cl1_test),test(2,indx_cl1_test),'ro'); % hold on; % plot(test(1,indx_cl2_test),test(2,indx_cl2_test),'go'); % plot(test(1,indx_cl3_test),test(2,indx_cl3_test),'bo'); % hold off; % legend("klasa 1","klasa 2","klasa 3"); wyjscie=sim(siec,dane_check); %sprawdzanie przynależności do danej klasy indx_cl1_net=find((wyjscie(1,:)>margines_gorny)&(wyjscie(2,:)<margines_dolny)&(wyjscie(3,:)<margines_dolny)); indx_cl2_net=find((wyjscie(1,:)<margines_dolny)&(wyjscie(2,:)>margines_gorny)&(wyjscie(3,:)<margines_dolny)); indx_cl3_net=find((wyjscie(1,:)<margines_dolny)&(wyjscie(2,:)<margines_dolny)&(wyjscie(3,:)>margines_gorny)); %odczyt wag sieci wagi_n_ukrytych=siec.IW{1,1} bias_n_ukrytych=siec.b{1} wagi_n_wyjsciowych=siec.LW{2,1} bias_n_wyjsciowych=siec.b{2} %wartości min i max zbioru testowego we1_min=min(test(1,:)); we1_max=max(test(1,:)); we2_min=min(test(2,:)); we2_max=max(test(2,:)); % %wizualizacja linii rozdzielających klasy % figure(3); % plot(test(1,indx_cl1_net),test(2,indx_cl1_net),'r.'); % hold on; % plot(test(1,indx_cl2_net),test(2,indx_cl2_net),'g.'); % plot(test(1,indx_cl3_net),test(2,indx_cl3_net),'b.'); % hold off; il_neuronow_ukrytych=siec.layers{1}.size; % figure(3); % hold on; for n=1:il_neuronow_ukrytych; if abs(wagi_n_ukrytych(n,1))<abs(wagi_n_ukrytych(n,2)) plot([we1_min we1_max],[-wagi_n_ukrytych(n,1)/wagi_n_ukrytych(n,2)*we1_min-bias_n_ukrytych(n)/wagi_n_ukrytych(n,2) -wagi_n_ukrytych(n,1)/wagi_n_ukrytych(n,2)*we1_max-bias_n_ukrytych(n)/wagi_n_ukrytych(n,2)],'k'); else plot([-wagi_n_ukrytych(n,2)/wagi_n_ukrytych(n,1)*we2_min-bias_n_ukrytych(n)/wagi_n_ukrytych(n,1) -wagi_n_ukrytych(n,2)/wagi_n_ukrytych(n,1)*we2_max-bias_n_ukrytych(n)/wagi_n_ukrytych(n,1)],[we2_min we2_max],'k'); end; end; hold off; axis([we1_min we1_max we2_min we2_max]); %transpozycja indeksów indx_cl1=indx_cl1'; indx_cl2=indx_cl2'; indx_cl3=indx_cl3'; indx_cl_n1=indx_cl1_test'; indx_cl_n2=indx_cl2_test'; indx_cl_n3=indx_cl3_test'; %obliczenia true positive TP=zeros(3,1); TN=zeros(3,1); T=zeros(3,1); FN=zeros(3,1); FP=zeros(3,1); F=zeros(3,1); il_punktow=length(test); a = 1; for i=1:length(indx_cl1_net) znaleziono = 0; for j=1:length(indx_cl_n1) if (indx_cl1_net(i) == indx_cl_n1(j)) znaleziono = 1; break; end end if (znaleziono) TP(a)=TP(a)+1; end end for i=1:length(indx_cl_n1) znaleziono = 0; for j=1:length(indx_cl1_net) if (indx_cl_n1(i) == indx_cl1_net(j)) znaleziono=1; break; end end if (znaleziono == 0) FN(a)=FN(a)+1; end end a = 2; for i=1:length(indx_cl2_net) znaleziono = 0; for j=1:length(indx_cl_n2) if (indx_cl2_net(i) == indx_cl_n2(j)) znaleziono = 1; break; end end if (znaleziono) TP(a)=TP(a)+1; end end for i=1:length(indx_cl_n2) znaleziono = 0; for j=1:length(indx_cl2_net) if (indx_cl_n2(i) == indx_cl2_net(j)) znaleziono=1; break; end end if (znaleziono == 0) FN(a)=FN(a)+1; end end a = 3; for i=1:length(indx_cl3_net) znaleziono = 0; for j=1:length(indx_cl_n3) if (indx_cl3_net(i) == indx_cl_n3(j)) znaleziono = 1; break; end end if (znaleziono) TP(a)=TP(a)+1; end end for i=1:length(indx_cl_n3) znaleziono = 0; for j=1:length(indx_cl3_net) if (indx_cl_n3(i) == indx_cl3_net(j)) znaleziono=1; break; end end if (znaleziono == 0) FN(a)=FN(a)+1; end end %punkty niezklasyfikowane Nklas = zeros(3,1); a = 1; for i=1:length(indx_cl_n1) szuk = indx_cl_n1(i); znaleziono=[]; znaleziono = find((indx_cl1_net(:)==szuk)); if (isempty(znaleziono)) znaleziono = find(indx_cl2_net(:)==szuk); end if (isempty(znaleziono)) znaleziono = find(indx_cl3_net(:)==szuk); end if (isempty(znaleziono)) Nklas(a)=Nklas(a)+1; end end a = 2; for i=1:length(indx_cl_n2) szuk = indx_cl_n2(i); znaleziono=[]; znaleziono = find((indx_cl1_net(:)==szuk)); if (isempty(znaleziono)) znaleziono = find(indx_cl2_net(:)==szuk); end if (isempty(znaleziono)) znaleziono = find(indx_cl3_net(:)==szuk); end if (isempty(znaleziono)) Nklas(a)=Nklas(a)+1; end end a = 3; for i=1:length(indx_cl_n3) szuk = indx_cl_n3(i); znaleziono=[]; znaleziono = find((indx_cl1_net(:)==szuk)); if (isempty(znaleziono)) znaleziono = find(indx_cl2_net(:)==szuk); end if (isempty(znaleziono)) znaleziono = find(indx_cl3_net(:)==szuk); end if (isempty(znaleziono)) Nklas(a)=Nklas(a)+1; end end pkt_klasy_1=length(indx_cl1_test); pkt_klasy_2=length(indx_cl2_test); pkt_klasy_3=length(indx_cl3_test); %obliczanie false positive, true negative etc. FP(1)=pkt_klasy_1-TP(1)-Nklas(1); FP(2)=pkt_klasy_2-TP(2)-Nklas(2); FP(3)=pkt_klasy_3-TP(3)-Nklas(3); TN(1)=(pkt_klasy_2 + pkt_klasy_3) - FP(1); TN(2)=(pkt_klasy_1 + pkt_klasy_3) - FP(2); TN(3)=(pkt_klasy_1 + pkt_klasy_2) - FP(3); FP_calosc = FP(1)+FP(2)+FP(3); TP_calosc = TP(1)+TP(2)+TP(3); FN_calosc = FN(1)+FN(2)+FN(3); TN_calosc = TN(1)+TN(2)+TN(3); T_proc=zeros(3,1); F_proc=zeros(3,1); Nklas_suma = 0; for i=1:3 Nklas_suma = Nklas_suma + Nklas(i); end Nklas_proc=zeros(3,1); %czułość, specyficzność itp. - ocena szczegółowa sensitivity=TP_calosc / (TP_calosc + FN_calosc) * 100 fp_rate=FP_calosc / (FP_calosc + TN_calosc) * 100 precision=TP_calosc / (TP_calosc + FP_calosc) * 100 accuracy=(TP_calosc + TN_calosc) / (TP_calosc + FN_calosc + FP_calosc + TN_calosc) * 100 specificity=TN_calosc / (FP_calosc + TN_calosc) * 100 T=TP; F=FP; for i=1:3 T_proc(i) = T(i) / (T(i) + F(i) + Nklas(i))*100; F_proc(i) = F(i) / (T(i) + F(i) + Nklas(i))*100; Nklas_proc(i) = Nklas(i) / (T(i) + F(i) + Nklas(i))*100; end TP_calosc_proc=(TP_calosc) / il_punktow * 100; FP_calosc_proc=(FP_calosc) / il_punktow * 100; Nklas_suma_proc = Nklas_suma / il_punktow * 100; j=l-3; tabela(j,1)= j; tabela(j,2)= TP_calosc_proc; tabela(j,3)= TP_calosc; tabela(j,4)= FP_calosc; tabela(j,5)= FP_calosc_proc; tabela(j,6)= Nklas_suma; tabela(j,7)= Nklas_suma_proc; TP_calosc end T T_proc F F_proc TP_calosc % TP_calosc_proc=(TP_calosc) / il_punktow * 100 FP_calosc % FP_calosc_proc=(FP_calosc) / il_punktow * 100 Nklas Nklas_proc Nklas_suma % Nklas_suma_proc = Nklas_suma / il_punktow * 100 il_neuronow_ukrytych il_punktow tabela % czerwona_1=size(indx_cl1_test) % zielona_2=size(indx_cl2_test) % niebieska_3=size(indx_cl3_test)
Raw Text
-
Cuckold licks pussy of his whore girlfriend and eats lover cum
5 min ago
-
my friend gave me a present
35 min ago
-
Fucking the boss's wife at a party to orgasm. She moans with pleasure and takes cum in her mout
1 hour ago
-
https://go90-keto-gummies-get.company.site/
1 hour ago
-
https://go90-keto-gummies-get.company.site/
1 hour ago
-
weltowel
1 hour ago
-
MA'e
1 hour ago
-
https://go90-keto-gummies-get.company.site/
1 hour ago
-
Abby and Bryana Lesbian Strap-On Fucking
1 hour ago
-
Just chill and fuck at home
2 hours ago