%% ЗАДАЧА ОПРЕДЕЛЕНИЯ ТИПА ЭКОНОМИКИ РОССИЙСКИХ РЕГИОНОВ
%  (классификация без учителя с использванием нейронных сетей в MATLAB)
% m скрипт решения задачи:

clc
clear all
%КЛАСТЕР АНАЛИЗ Regions Russia в пространстве  4-х мерных векторов
%для оценки типологии региональной экономики
%ВВОД ДАННЫХ ФОРМИРОВАНИЕ ИСХОДНОЙ ТАБЛИЦЫ ДАННЫХ
load RegionEcon
load Region2
%ФОРМИРОВАНИЕ НОРМИРОВАННОГО ПРОСТРАНСТВА 100 Х 100------------------
P=RegionEcon4;
%ФОРМИРОВАНИЕ 1 ВЕКТОРА СТОЛБЦА 
P(:,2:4)=[];
%ТРАНСПОНИРОВАНИЕ ВЕКТОРА -ПОЛУЧЕНИЕ ВЕКТОР СТРОКИ 
x1=rot90(P);
P=RegionEcon4;
%ФОРМИРОВАНИЕ 2 ВЕКТОРА СТОЛБЦА 
P(:,1)=[];
P(:,2:3)=[];
%ТРАНСПОНИРОВАНИЕ ВЕКТОРА -ПОЛУЧЕНИЕ ВЕКТОР СТРОКИ 
x2=rot90(P);
P=RegionEcon4;
%ФОРМИРОВАНИЕ 3 ВЕКТОРА СТОЛБЦА 
P(:,1)=[];
P(:,1)=[];
P(:,2)=[];
x3=rot90(P);
P=RegionEcon4;
%ФОРМИРОВАНИЕ 4 ВЕКТОРА СТОЛБЦА 
P(:,1)=[];
P(:,1)=[];
P(:,1)=[];
x4=rot90(P);
%ФОРМИРОВАНИЕ ИСХОДНОЙ ВХОДНОЙ МАТРИЦЫ
x=[x1;x2;x3;x4];
%ФОРМИРОВАНИЕ МАТРИЦЫ МИНИМАЛЬНЫХ И МАКСИМАЛЬНЫХ ЭЛЕМЕНТОВ ИЗ СТРОК
%ВХОДНОЙ МАТРИЦЫ
u=minmax(x);
x11=(x1-u(1,1))/(u(1,2)-u(1,1));
x22=(x2-u(2,1))/(u(2,2)-u(2,1));
x33=(x3-u(3,1))/(u(3,2)-u(3,1));
x44=(x4-u(4,1))/(u(4,2)-u(4,1));
x11=100*x11;
x22=100*x22;
x33=100*x33;
x44=100*x44;
%ФОРМИРОВАНИЕ НОРМИРОВАННОЙ ВХОДНОЙ МАТРИЦЫ
XYN=[x11;x22;x33;x44];

nclusters=4;% ЗАДАНИЕ ЧИСЛА ЦЕНТРОВ КЛАСТЕРОВ
%ФОРМИРОВАНИЕ И ОБУЧЕНИЕМ СЛОЯ КОХЕНЕНА
net = newc([0 100; 0 100; 0 100; 0 100], nclusters, 0.1, 0.0005);
wo = net.IW{1};
bo = net.b{1};
co = exp(1)./bo;
net.trainParam.epochs=500;
net.trainParam.show=20;
net = train(net,XYN);
w = net.IW{1};
bn = net.b{1};
cn = exp(1)./bn;

%ГРАФИК Регионов В ПРОСТРАНСТВЕ x2 Х x3 100 Х 100
figure(1);
plot(x22,x33,'+','LineWidth',1.5)%графики
title('Проекция: Промышленность- Сельское хозяйство');
xlabel('вес промышленности ');
ylabel('вес сельского хозяйства');
grid on%сетка
hold on
%ГРАФИК ЦЕНТРОВ КЛАСТЕРОВ ПОСТРОЕННЫХ СЛОЕМ КОХЕНА 
%В ПРОСТРАНСТВЕ x2 Х x3 100 Х 100
plot(w(:,2),w(:,3),'ko','LineWidth',3.5)
hold off

figure(2);
plot(x33,x44,'+','LineWidth',1.5)%графики
title('Проекция:Сельское хозяйство-Торговля');
xlabel('вес сельского хозяйства ');
ylabel('вес торговли');
grid on%сетка
hold on
%ГРАФИК ЦЕНТРОВ КЛАСТЕРОВ ПОСТРОЕННЫХ СЛОЕМ КОХЕНА 
%В ПРОСТРАНСТВЕ x3 Х x4 100 Х 100
plot(w(:,3),w(:,4),'ko','LineWidth',3.5)
hold off

figure(3);
plot3(x22,x33,x44,'+b','LineWidth',1.0)%графики
title('Промышленность-Сельское хозяйство-Торговля');
xlabel('вес промышленности');
ylabel('вес сельского хозяйства');
zlabel('вес торговли')
grid on%сетка
hold on
%ГРАФИК ЦЕНТРОВ КЛАСТЕРОВ ПОСТРОЕННЫХ СЛОЕМ КОХЕНА 
%В ПРОСТРАНСТВЕ x2 Х x3 X x4 100 Х 100 X 100
plot3(w(:,2),w(:,3),w(:,4),'ko','LineWidth',4.5)
hold off

%РАПРЕДЕЛЕНИЕ РЕГИОНОВ ПО КЛАССАМ
a=sim(net,XYN);
ac=vec2ind(a);
%%РАСПРЕДЕЛЕНИЕ РЕГИОНОВ ПО КЛАСТЕРАМ-----------
Regname=sym(RegionData3(:,1));
klreg=sym(ac);

for i=1:79
RegName_Klass =[Regname(i) klreg(i)]
end

klass1=[w(1,1) w(1,2) w(1,3) w(1,4)]
klass2=[w(2,1) w(2,2) w(2,3) w(2,4)]
klass3=[w(3,1) w(3,2) w(3,3) w(3,4)]
klass4=[w(4,1) w(4,2) w(4,3) w(4,4)] 

%%
%%   Окно обучения нейронной сети
%% Качественное описание классов.
% Класс 1 - торгово-аграрный тип  региональной экономики
% Класс 2 - добывающий тип  региональной экономики
% Класс 3 - аграрно-торговый тип  региональной экономики
% Класс 4 - промышленно-торговый тип  региональной экономики