Читать книгу Introducción al Machine Learning con MATLAB - Erik Cuevas Jiménez - Страница 19
Llenado de valores faltantes en MATLAB
ОглавлениеUna vez importados los datos al entorno de MATLAB, se prosigue a presentar funciones y ejemplos de diferentes casos de aplicación sobre el llenado de valores faltantes. Los valores faltantes dependen del tipo de dato; a continuación, en la tabla 1.1, se puede observar el listado de los tipos de datos faltantes.
NaN(Not a Number) | Para los datos de tipo real o punto flotante (double y single) y extensiones de tiempo (duration y calendarDuration) |
NaT(Not a Time) | Para los datos que involucran tiempo o fechas (datetime) |
' ' | Para datos de tipo carácter (char) vacíos |
<missing> | Para cadenas (string) vacías |
{' '} | Para arreglos de celdas con cadenas vacías |
<undefined> | Para datos categóricos (categorical) no definidos |
Tabla 1.1. Tipos de datos faltantes.
Con la función ismissing de MATLAB se indica qué elementos de una tabla, matriz o vector son valores faltantes. El resultado que entrega es una matriz o vector lógico del tamaño del argumento de entrada. Esta función tiene la siguiente sintaxis:
DM = ismissing(V)
El ejemplo de cómo utilizar la función ismissing es presentado en el algoritmo 1.1, donde se define un vector V con valores de tipo enteros y valores faltantes. La función ismissing procesa el argumento de entrada V y el resultado de este procesamiento se entrega en DM, que es un vector de la misma dimensión de V con valores lógicos:
% Se define un vector con diferentes valores
V = [3 NaN 5 6 7 NaN NaN 9];
% Se ejecuta la función ismissing a los datos
DM = ismissing(V)
DM = 1x8 logical array
0 1 0 0 0 1 1 0
Algoritmo 1.1. Ejemplo del uso de la función ismissing de MATLAB.
A continuación, se definirá la tabla de datos D1, que contendrá datos tabulares de diferentes tipos de datos. Mediante la función table, se unirán a estos vectores y columnas, obteniendo como resultado la tabla D1. Dicho ejemplo es presentado en el algoritmo 1.2:
% Programa 1.2 para la Definición de una tabla en MatLAB
% Autores: Erik Cuevas, Omar Avalos, Arturo Valdivia y Primitivo Díaz
% Vector de observaciones de tipo entero
IntVar = [NaN;2;4;8;9;12;18;27];
% Vector de observaciones de tipo real
RealVar = single([1.1;NaN;5.2;7.3;9.4;11.5;16.6;21.7]);
% Vector de observaciones de tipo Celda con cadenas
celdcadVar = {'uno';'tres';'nueve';'siete';'diez';'doce';'veinte';'treinta'};
% Vector de observaciones de tipo caracter
caractVar = ['A';'B';'C';' ';'E';'F';'G';'H'];
% Vector de observaciones de tipo categóricas
categoVar = categorical({'rojo';'amarillo';'azul';'violeta';'';'morado';...
'naranja';'blanco'});
% Vector de observaciones de tipo fecha
fechaVar = [datetime(2014:1:2018,7,20) NaT datetime(2017,8,26)...
datetime(2017,10,8) ]';
% Vector de observaciones de tipo cadena
cadVar = ["a";"b";"c";"d";"e";"f";missing;"i"];
% Se crea una tabla usando los vectores como columnas mediante table
D1 = table(IntVar,RealVar,celdcadVar,caractVar,categoVar,fechaVar,cadVar)
Algoritmo 1.2. Definición de una tabla en MATLAB.
Para el siguiente ejemplo, se tomará la tabla de datos D1 que se definió en el algoritmo 1.2, donde la inspección de los datos que contiene la tabla D1 se observa en la figura 1.4. Para el siguiente ejemplo, se utilizará la función rmmissing para eliminar las observaciones con características faltantes de la tabla D1.
Figura 1.4. Inspección de datos correspondientes a la tabla D1.
Como se puede observar, la tabla de datos D1 contiene una serie de valores faltantes en diferentes filas. La última observación es la única que no contiene valores faltantes. El ejemplo consiste en remover todas las observaciones o filas que contengan, al menos, un valor faltante; por lo tanto, cabe esperar que solo la última fila sea retornada como resultado en la variable R. Esta función tiene la siguiente sintaxis:
R = rmmissing(D1)
La ejecución de la función rmmissing con el argumento D1 entregará el resultado que se muestra en la figura 1.5.
Figura 1.5. Resultado de eliminar las instancias con valores faltantes en la tabla D1.