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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
110
%-------------------------------
% 29.10.15 15.39 D., Aeroport.
%-------------------------------
action=isstruct(a2(1));
switch action
case false
PR=a1;
Q=a2;
n=size(V,1);
X=PR(:,1:end-1);
Y=PR(:,end);
PRTeachCell = svg_cells (X, V, Y);
%Массив структур д/хранения настроек нейронов
FieldNames={...
'LPCA',...
'AdaptorMean',...
'AdaptorAmpl',...
'epsilon',...
'Q',...
'dimEffective',...
'p',...
'ATA',...
'N1'};
111
CellArray4Struct=cell(n,numel(FieldNames));
NEURON=cell2struct(CellArray4Struct,FieldNames,2);
%/Массив структур д/хранения настроек нейронов
for k=1:n
NEURON(k)=amanda1([PRTeachCell{k,1} PRTeachCell{k,2}],Q);
end
f=struct(...
'SVG',V,...
'NEURON',NEURON);
case true
X=a1;
NN=a2;
SVG=V;
[XForwardCell,pos] = svg_cells (X, SVG);
%Фильтрация пустых форвард-предикторных ячеек
MASK=false(size(SVG,1),1);
for k=1:size(SVG,1)
if size(XForwardCell{k},1)
MASK(k)=true;
end
end
kNums=1:size(SVG,1);
kNums=kNums(MASK);
%/Фильтрация пустых форвард-предикторных ячеек
f=zeros(size(X,1),2);
112
for k=1:numel(kNums)
f(pos{kNums(k)},:)=amanda1(XForwardCell{kNums(k)},NN(kNums(k)));
end
end
function f = amanda1 (arg1, arg2)
%-----------------------------
% 29.06.2015, N., Kaluga.
%-----------------------------
epsilon=0.01;
action=isstruct(arg2);
switch action
case false
PR=arg1;
Q=arg2;
X=PR(:,1:end-1);
Y=PR(:,end);
f=amanda_core(X,Y,Q,epsilon);
case true
AMANDANET=arg2;
X=arg1;
[g,e]=amandanet_apply(AMANDANET,X);
f=[g e];
end
function AMANDANET = amanda_core (X, Y, Q, epsilon)
%------------------------------------
% 29.10.2015 16:42, D., Aeroport.
113
%------------------------------------
N=size(X,1);
%Преобразования адаптора
[Y,Mx,Ampl]=logsigtransform(Y,epsilon);
Y=log(Y)-log(1-Y);
%/Преобразования адаптора
%PCA-обучение
ISTR=struct(...
'action','train',...
'xData',X);
PCAS=pca_amanda(ISTR);
dimEffective=PCAS.dimEffective;
%/PCA-обучение
if ~dimEffective
p='Not_a_Number';
ATA='Not_a_Number';
else
%PCA-применение
ISTR=struct(...
'action','apply',...
'xData',X,...
'CloudParam',PCAS);
xData=pca_amanda(ISTR);
X=xData.xData;
%/PCA-применение
m=size(X,2);
%Заготовка A- матрицы
ZGlobal=cell(1,Q);
for l=1:Q
ZGlobal{l}=aenumerator(l,m);
114
end
ANRow=N;
ANCol=nchoosek(m+Q,m);
A=zeros(ANRow,ANCol);
A(:,1)=1;
j=2;
for l=1:Q
Z=ZGlobal{l};
ZX=X(:,Z);
ZX=reshape(ZX,N,size(Z,1),size(Z,2));
CurrentRowT=prod(ZX,3);
A(:,j:j+size(CurrentRowT,2)-1)=CurrentRowT;
j=j+size(CurrentRowT,2);
end
if j-1~=ANCol
error('WARNING: j-1~=ANCol')
end
%/Заготовка A- матрицы
%Решение A- уравнения
ATA=A'*A;
if sum(sum(isnan(ATA)))
p='Not_a_Number';
elseif (rcond(ATA)>1e-12)
p=ATA\(A'*Y);
else
p='Not_a_Number';
end
end
%/Решение A- уравнения
AMANDANET=struct(...
Источник: https://baza.diplomsite.ru/previewfile/366