Analisis de cluster aplicado a datos acústicos

Download PDF

En ingeniería acústica, como en otras disciplinas, también surge la necesidad de identificar regularidades en representaciones gráficas del espacio matemático definido por los datos acústicos o físicos en general, que pueden corresponder por ejemplo, a registros de nivel de presión sonora, fuerza de blanco, backscattering cross section, valores de amplitud de las componentes armónicas del espectro de audio, posición gps en el espacio, tiempo o cualquier otra transformación de las variables, obtenida luego de aplicar una reducción de dimensionalidad mediante análisis de componentes principales. Es por ello que resulta apropiado el considerar técnicas como el análisis de cluster para estudiar el comportamiento de la data acústica.

¿Que es el análisis de cluster?

El análisis de cluster, también conocido análisis de conglomerados, análisis de grupos o análisis de agrupamientos, es una técnica estadística de análisis de datos multivariados que tiene por objetivo agrupar elementos considerando obtener la máxima homogeneidad en cada grupo y la mayor diferencia entre los grupos.

Comparto aquí un script para realizar una analisis de cluster de datos acusticos con matlab, que ademas de exporta los datos a una planilla excel con la clasificación de los datos.

%% APLICACION DE METODO DE ANALISIS DE CLUSTER A DATOS ACUSTICOS 
clear
! taskkill /F /IM excel.exe
clc
close all


DATA_ALEATORIA      = 1;
GRAFICANDO          = 1;
ANALISIS_DE_CLUSTER = 1;
GUARDAR_EXCEL       = 0;
TEXTO               = 0;

n  =  100;    % numero_de datos por cluster
nc =   5;     % numero_de_cluster 

%% DATA ALEATORIA
if (DATA_ALEATORIA == 1)


a = [[1:1:n]'+25               round(5*randn(n,1)+30)];
b = [round(2*randn(n,1)+55 )   round(10*randn(n,1)-15 )];
c = [round(2*randn(n,1)-35 )   round(10*randn(n,1)+5  )];
d = [round(4*randn(n,1)-5  )   round(5*randn(n,1)-35  )]; 
e = [round(10*randn(n,1)+10)   round(10*randn(n,1)    )]; 
all_data = [a;b;c;d;e];
[pad qad] = size(all_data);
end

serie_s1    = [1:1:5];
serie_s2 = repmat(serie_s1,n,1);
serie_s3 = reshape(serie_s2,n*5,1);


%% GRAFICANDO
if (GRAFICANDO == 1)
[pad qad] = size(all_data);

figure()
plot(a(:,1),a(:,2),'b.');hold on
plot(b(:,1),b(:,2),'r.');hold on
plot(c(:,1),c(:,2),'g.');hold on
plot(d(:,1),d(:,2),'k.');hold on
plot(e(:,1),e(:,2),'c.');hold on
title('Análisis de Cluster de datos acústicos')
end

%% ANALISIS DE CLUSTER
if (ANALISIS_DE_CLUSTER == 1)
IDX = kmeans(all_data,nc);
pause(1)

if (TEXTO == 1)
for k=1:pad
    text(all_data(k,1),all_data(k,2),num2str(IDX(k)));
    hold on
end
end
end

%% MOSTRANDO LA TABLA DE DATOS EN PANTALLA
varNames = {'ID','x','y','etiqueta_inicial','etiqueta_asignada'};
T = table([1:1:pad]',all_data(:,1),all_data(:,2),serie_s3,IDX,'VariableNames',varNames);
disp(T)

%% EXPORTANDO DATOS A EXCEL
if (GUARDAR_EXCEL == 1)
% Para exportar la data hay que construir previamente un pack de datos tipo
% cell y se contruye LINEA POR LINEA

para_excel = {1,1,1,1,1};
for k=1:pad
dd = {[1:1:pad]',all_data(k,1),all_data(k,2),serie_s3(k,1),IDX(k,1)}; % si funciona
para_excel = [para_excel ;dd];
end

para_excel(1,:) = varNames;

xlswrite('testdata2.xls', para_excel, 1, 'E1')

winopen('testdata2.xls')
end

return
    

Referencias bibliográficas para análisis de cluster y análisis de componentes principales:

  1. https://www.uv.es/ceaces/multivari/cluster/CLUSTER2.htm
  2. http://www.estadistica.net/Master-Econometria/Analisis_Cluster.pdf
  3. http://www.ugr.es/~mvargas/2.RESUMENANLISISCLUSTER.pdf
  4. http://wpd.ugr.es/~bioestad/guia-spss/practica-8/
  5. http://www.ub.edu/stat/personal/cuadras/metodos.pdf
  6. http://www.ub.edu/stat/personal/cuadras/nuevosmetodos.pdf
  7. https://es.wikipedia.org/wiki/An%C3%A1lisis_de_grupos
  8. https://es.wikipedia.org/wiki/Estad%C3%ADstica_multivariante
  9. https://es.wikipedia.org/wiki/Algoritmo_de_agrupamiento

 

The following two tabs change content below.

LEONARDO PARADA VALENCIA

INGENIERO ACÚSTICO EXPERTO EN DISEÑO SONORO Y MÚSICA PARA VIDEOJUEGOS