%% Definizione della matrice dei dati iniziale X=[0.85 15.9 0.81 57.0 0.42 30.2 0.44 46.0 0.35 133.9 0.30 7.5 0.29 39.5 0.50 10.0 0.19 8.4 0.44 19.5 0.40 36.0 0.50 4.8 0.20 7.9 0.35 72.0 0.25 18.1 0.15 30.6 0.44 132.4 0.79 328.1 0.60 208.0 0.50 140.0 0.44 362.0 0.65 202.0]; % labels = vettore colonna che contiene le etichette labels={'Fiuggi' 'Rocchetta' 'Panna' 'S.Benedetto' ... 'Fabia' 'Fonteviva' 'Conad Lieta' 'S.Bernardo' ... 'Guizza Caudana' 'Levissima' 'Vera' 'Fontealta' ... 'Norda' 'Conad Flaminia' 'Pejo' 'Guizza' 'Aura' ... 'S.Gemini' 'S.Pellegrino' 'Gaudianello' 'Ferrarelle' 'Uliveto'}'; varlabels={'Prezzo' 'Calcio'}; Xtable=array2table(X,'RowNames',labels','VariableNames',varlabels); disp(Xtable) %% Diagramma di dispersione iniziale scatter(X(:,1),X(:,2),'o') %% Diagramma di dispersione iniziale con labels scatter(X(:,1),X(:,2),'o') text(X(:,1),X(:,2),labels) xlabel(varlabels{1}) ylabel(varlabels{2}) %% I dati vengono standardizzati Z=zscore(X); Ztable=array2table(Z,'RowNames',labels','VariableNames',varlabels); %% Due gruppi: Metodo delle k-medie [idx,C]=kmeans(Z,2); % Rappresentazione grafica dei cluster ottenuti spmplot(Ztable,idx); %% Due gruppi: diagramma di dispersione con aggiunta dei centroidi ed etichette close all gscatter(Z(:,1),Z(:,2),idx,'br','ox',10) hold('on') % Aggiunta dei centroidi scatter(C(:,1),C(:,2),500,'ks') % Aggiunta della legenda legend({'Gruppo 1' 'Gruppo 2' 'Centroidi'}) numEeti=strcat(num2str(idx),'-',labels); % Aggiunta delle label per ogni punto (gruppo di appartenenza e nome della % riga) text(Z(:,1),Z(:,2),numEeti) xlabel(varlabels{1}) ylabel(varlabels{2}) %% Tre gruppi: metodo delle k-medie [idx,C]=kmeans(Z,3); % Rappresentazione grafica dei cluster ottenuti spmplot(Ztable,idx); %% Tre gruppi: rappresentazione del diagramma di dispersione con aggiunta dei centroidi close all gscatter(Z(:,1),Z(:,2),idx,'brg','ox*',10) hold('on') % Aggiunta dei centroidi scatter(C(:,1),C(:,2),500,'ks') % Aggiunta della legenda legend({'Gruppo 1' 'Gruppo 2' 'Gruppo 3' 'Centroidi'}) numEeti=strcat(num2str(idx),'-',labels); % Aggiunta delle label per ogni punto (gruppo di appartenenza e nome della % riga) text(Z(:,1),Z(:,2),numEeti) xlabel(varlabels{1}) ylabel(varlabels{2}) %% Quattro gruppi: metodo delle k-medie [idx,C]=kmeans(Z,4); % Rappresentazione grafica dei cluster ottenuti spmplot(Ztable,idx); %% Quattro gruppi: rappresentazione del diagramma di dispersione con aggiunta dei centroidi close all gscatter(Z(:,1),Z(:,2),idx,'brg','ox*',10) hold('on') % Aggiunta dei centroidi scatter(C(:,1),C(:,2),500,'ks') % Aggiunta della legenda legend({'Gruppo 1' 'Gruppo 2' 'Gruppo 3' 'Gruppo 4' 'Centroidi'}) n=size(Z,1); numEeti=strcat(num2str(idx),'-',labels); % Aggiunta delle label per ogni punto (gruppo di appartenenza e nome della % riga) text(Z(:,1),Z(:,2),numEeti) xlabel(varlabels{1}) ylabel(varlabels{2}) %% Indice di Calinski Harabasz % Calcolo indice di Calinski Harabasz per una numerosità dei gruppi pari a % 2, 3 e 4 close all dd=evalclusters(Z,'kmeans','CalinskiHarabasz','KList',2:4); plot(2:4,dd.CriterionValues) title('Indice di Calinki e Harabasz') xlabel('k') % Si noti che i risultati sono per k=3 e k=4 sono diversi con quelli % ottenuti dalla macro di Excel kmeans