Visualización en tabla para detectar datos incorrectos y limpiar los datasets antes de realizar el Deep Learning (aprendizaje profundo) en PHP

 


Clase en PHP para visualizar la estructura de datos, preparar y limpiar el dataset antes del Deep Learning

Los datos que facilitamos a nuestros modelos de redes neuronales deben de estar impecables, tal y como explicaba en el artículo de Ingeniería de datos para el Machine Learning.

No vale con que le demos los datos a nuestro modelo de red neuronal tal cual lo importamos.

Nos podemos encontrar con:
- Campos vacíos: '' ó '-'
- Campos Nulos: null
- Campos numéricos erróneos: 'na' ó 'nan'
- Valores numéricos 0. Puede ser que falten datos o que realmente sean correctos
- Fechas que podemos separar en sub features
- Otros campos que podemos separar en sub features, como por ejemplo una IP o códigos de paises 'es', 'de', 'fr',….
- Campos en texto donde el sistema no podrá aprender nada y deberemos eliminarlos o cambiarlos.

En definitiva, todo se reduce en tener bajo nuestro control todos los datos, que no se nos escape un dato incoherente para que no tengan ningún dato erróneo y que nuestro modelo de red neuronal no nos falle en las predicciones o que no aprenda correctamente los patrones. Un  dato puede hacer que nuestra modelo desvirtúe la salida. Deben de estar IMPECABLES. El proceso de limpieza y detección puede ser tedioso, pero con estas ayudas conseguiremos nuestro objetivo con más facilidad y efectividad.

Próximamente publicaré la librería que se encarga del preproceso de datos a nivel de Ingeniería de datos. La librería que he publicado y que es el objetivo de este artículo es la librería que se encarga de visualización de tabla, es una librería que necesitamos para mostrar los datos previamente calculados de una manera fácilmente entendible y poder detectar los fallos. La librería muestra una tabla con colores y formatos para poder identificar los posibles errores. Es una herramienta útil de visualización de la estructura de los datos.

Por suerte no hace falta revisar todos los datos de uno en uno para localizar todos estos problemas. La libraría que publicaré en breve es la que realizará todo este proceso por nosotros.

Lo que sí necesitamos es saber cómo está de 'salud' la estructura de nuestros datos de una manera fácil, y aquí es donde entra en acción esta librería en PHP de visualización de la estructura de datos del dataset para Machine Learning antes de proceder al trabajo de producción del Deep Learning, que he creado en puro PHP y expresamente para poder ser utilizada en entornos CLI (Cónsola).

Vamos a ver como visualizamos unos datos calculados en un dataset. El dataset utilizado contiene datos sobre visitas a inmuebles y recoge las características del inmueble visitado. En el ejemplo se muestra una parte de la estructura, pero que contiene mucha información importante sobre este datset. En este ejemplo de muestra (screenshot superior), podemos ver que hemos detectado en:

- minim_pax: Missing Data Threshold, que quiere decir que existen valores menores que el 'Threshold', que en este caso el valor mínimo Threshold es '2'. PAX, indica el número de personas, por lo que no puede ser 0. Aquí hemos detectado un fallo en los datos que deberemos corregir. Zero Values: Que nos indica que este campo contiene valores '0', por lo que debemos prestarle atención. Es imposible que un inmueble pueda tener 0 personas, por lo que deberemos revisar los datos que tengan valor 0 y actuar sobre ellos. Ya decidiremos cómo, pero de momento ya sabemos que aquí tenemos datos erróneos. En algunos campos, como en el 'is_sell' (que quiere decir si es de venta o alquiler), deben de haber valores '0' si un inmueble es de alquiler. Estos registros habrá que tratarlos diferentes. El sistema nos avisará, y actuaremos en consecuencia según el tipo de dato. Esto da para otro futuro artículo. En éste solo nos centraremos en la visualización de la estructura de nuestros datos. 

- country'4' registros sin valores. Deberemos actuar, ya que existen campos vacíos. String Detected: Lo que indica que este campo contiene strings y deberemos hacer algo con ellos. En el caso de PAÍS, podemos crear un nuevo campo para cada país y asignarle un 1 o un 0, según pertenezca o no a dicho país. Esta característica nos ha ayudado a detectar un campo utilizable en formato característica, pero inútil en el dataset original.

- ip: Detectado formato de IP. Se puede desglosar y nos avisa el sistema, pero utilizarlo tal cuál es inútil en el dataset original, y OJO, que también ha detectado 4 registros vacíos, que no contienen ninguna IP. Deberemos actuar sobre estos 4 registros.

- visit_date: Detectado formato de FECHA. Se puede desglosar y nos avisa el sistema. Nos dice que está OK, porque tiene un formato usable (aunque no directamente), no faltan datos y no hay ningún otro valor erróneo, pero utilizarlo tal cuál es inútil en el dataset original.

cod_appart: Nos dice que está OK. Tiene un formato usable directamente por nuestro modelo, no faltan datos y no hay ningún otro valor erróneo. Podemos olvidarnos de este dato ya que es totalmente CORRECTO y no hace falta actuar sobre él.

Gracias a visualizar la estructura en este formato facilitado por la clase cli-math-ml-table, hemos podido ver fácilmente donde tenemos problemas para actuar sobre nuestro dataset, sabiendo exactamente donde falla y qué cambios debemos realizar sobre ellos para conseguir unos datos de calidad, consistentes y asegurarnos así que nuestro modelo esté lo mejor optimizado para aprender correctamente.

La librería no calcula nada. Solamente visualiza los datos que les pasamos en un formato correcto, en filas, columnas, cabeceras y colores para poder identificar los valores clave de la estructura del dataset. La librería donde se realizan todos estos cálculos es la que publicaré próximamente. Un poco de paciencia 😉.

También la podéis encontrar en phpclasses.org.






Comentarios

Artículos más populares

Ja es poden veure els programes de 'REDES' de TVE2 per internet

Clase en PHP para encender/apagar LED en Raspberry pi

Raspberry Pi. Encender/Apagar LED desde PHP. Acceso directo a los puertos GPIO ultrarápido.