Дипломная работа: Автоматизация управления активами при помощи кластерного анализа паттернов поведения игроков рынка в ПАО «ФК Открытие»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
120
n=size(V,1);
if nargin==2
Z=cell(n,1);
elseif nargin==3
Z=cell(n,2);
end
pos=cell(n,1);
pos_ini=(1:N)';
for i=1:n
Z{i,1}=X(L==i,:);
pos{i}=pos_ini(L==i);
if nargin==3
Z{i,2}=Y(L==i);
end
end
function L = svg_labels (X, V)
N=size(X,1);
n=size(V,1);
R2=zeros(N,n);
for j=1:n
R2(:,j)=sum((ones(N,1)*V(j,:)-X).^2,2);
end
[~,L]=min(R2,[],2);
Приложение 12
function [best_NEURON,best_Q] = amanda_cvo (ISTR)
%-------------------------------
% 29.10.15 19.01 D., Aeroport.
%-------------------------------
121
n_NNCLUSTER=ISTR.n_NNCLUSTER;%<scalar>
n_NEURON=ISTR.n_NEURON;
n_Q=ISTR.n_Q;
PR=ISTR.PR;
gui=ISTR.gui;
COLMATR_INI=jet(10000);
t=1:1:numel(n_Q);
if numel(t)>1
tc=ceil(1/(numel(n_Q)-1)*((10000-1)*t-(10000-numel(n_Q))));
else
tc=1;
end
COLMATR=COLMATR_INI(tc,:);
COLMATR=COLMATR./(max(COLMATR,[],2)*ones(1,3));
nPieces=10;
[PR_CVS,t]=cvs_randomdivide(PR,nPieces);
ErrMatrix=zeros(numel(n_NEURON),numel(n_Q));
FFErrVector=zeros(numel(n_NEURON),numel(n_Q));
if gui
c1=0.7;
sz=get(0,'ScreenSize');
H0=figure(...
'Position',[0.05*sz(3) 0.4*sz(4) 0.5*sz(3) 0.5*sz(4)],...
'name','AMANDA_CVO(S)',...
'numbertitle','off','color',[0 0 0]);
H1=axes(...
122
'Parent',H0,...
'color',get(H0,'color'),...
'xcolor',[0 c1 c1],...
'ycolor',[0 c1 c1],...
'nextplot','add',...
'layer','top',...
'linewidth',1.0...
);
xlabel(...
H1,...
'„исло нелинейных нейронов',...
'Color',[0 c1 c1])
ylabel(...
H1,...
'¬алидационна¤ нев¤зка',...
'Color',[0 c1 c1])
sz0=get(H0,'position');
hui1=uicontrol(...
'style','pushbutton',...
'parent',H0,...
'position',[sz0(3)-110 10 100 26],...
'string','stop',...
'ForegroundColor',[0.8 0 0],...
'FontWeight','b',...
'CallBack',@cbbfun);
set(H0,'ResizeFcn',{@WindowResized hui1})
end
for i=1:numel(n_NEURON)
for j=1:numel(n_Q)
123
if gui
drawnow
pause(0.01)
end
ErrTemp=zeros(nPieces,1);
FFErrTemp=zeros(nPieces,1);
for count=1:nPieces
PR_TEACH=PR_CVS(t~=count,:);
PR_EXAM=PR_CVS(t==count,:);
AMANDANET=amanda_(PR_TEACH,n_Q(j),n_NEURON(i),n_NNCLUSTER);
FFNET=perceptron1_(PR_TEACH,20,n_NEURON(i));
Y0=PR_EXAM(:,end);
COLOUT=amanda_(PR_EXAM(:,1:end-1),AMANDANET);
Y1=COLOUT(:,1);
Y_FF=perceptron1_(PR_EXAM(:,1:end-1),FFNET);
ErrTemp(count)=max(abs(Y0-Y1))/(max(Y0)-min(Y0));
FFErrTemp(count)=max(abs(Y0-Y_FF))/(max(Y0)-min(Y0));
end
ErrMatrix(i,j)=median(ErrTemp);
FFErrVector(i)=median(FFErrTemp);
if gui
set(H0,'name',strcat(...
'AMANDA_CVO(S) progress (done):',['n='
num2str(n_NEURON(i)) ','],['Q=' num2str(n_Q(j))]))
drawnow
pause(0.01)
end
end
ErrMatrixCurrent=ErrMatrix(1:i,:);
124
FFErrVectorCurrent=FFErrVector(1:i);
[I1,J1]=min_matrixel_search(ErrMatrixCurrent);
ErrCurrentMin=ErrMatrixCurrent(I1,J1);
ErrTreshold=(1+0.05)*ErrCurrentMin;
anniter=1:i;
AnniterMin=min(anniter(min(ErrMatrixCurrent,[],2)<=ErrTreshold));
I0=AnniterMin;
ErrMatrixClip=ErrMatrixCurrent(AnniterMin,:);
[AbsoluteErrMin,J0]=min(ErrMatrixClip);
best_NEURON=n_NEURON(I0);
best_Q=n_Q(J0);
if gui
cla(H1)
yGlMin=min(min(min(ErrMatrixCurrent)),min(FFErrVectorCurrent));
yGlMax=max(max(max(ErrMatrixCurrent)),max(FFErrVectorCurrent));
dQ=yGlMax-yGlMin;
if dQ<1e-8
set(H1,'ylim',[yGlMin-1e-8 yGlMax+1e-8])
else
set(H1,'ylim',[yGlMin-0.1*dQ yGlMax+0.1*dQ])
end
if i<2
set(H1,'xlim',[min(n_NEURON(1:i))-1 max(n_NEURON(1:i))+1])
else
dn=max(n_NEURON(1:i))-min(n_NEURON(1:i));
set(H1,'xlim',[min(n_NEURON(1:i))-0.1*dn
max(n_NEURON(1:i))+0.1*dn])
end
xIntv=get(H1,'xlim');
Источник: https://baza.diplomsite.ru/previewfile/366