Hola a todos, estoy de vuelta con otro tema que es el preprocesamiento de datos . Esta es una parte del proceso de análisis de datos y aprendizaje automático en el que los científicos de datos pasan la mayor parte de su tiempo. En este artículo, profundizaré en el tema, por qué lo usamos y los pasos necesarios.
El preprocesamiento de datos es una técnica de minería de datos que consiste en transformar datos sin procesar en un formato comprensible. Los datos del mundo real a menudo son incompletos, inconsistentes y/o carecen de ciertos comportamientos o tendencias, y es probable que contengan muchos errores. El preprocesamiento de datos es un método comprobado para resolver tales problemas.
En el mundo real, los datos generalmente están incompletos: carecen de valores de atributos, carecen de ciertos atributos de interés o contienen solo datos agregados. Ruidoso: contiene errores o valores atípicos. Incoherente: que contiene discrepancias en códigos o nombres.
Tomado de Google Imágenes
Proceso de aprendizaje automáticoPasos en el preprocesamiento de datos
Entonces, sin perder más tiempo, ¡comencemos!
“ Los nuevos comienzos a menudo comienzan con finales dolorosos. Agradece esas puertas cerradas y esos desvíos, te están guiando a un lugar mejor”
Así es como importamos bibliotecas en Python usando la palabra clave de importación y estas son las bibliotecas más populares que usó cualquier científico de datos. (Usé- Jupyter Notebook)
NumPy es el paquete fundamental para la computación científica con Python. Contiene entre otras cosas:
1. Un poderoso objeto de matriz N-dimensional
2. Funciones sofisticadas (de radiodifusión)
3. Herramientas para integrar código C/C++ y FORTRAN
4. Capacidades útiles de álgebra lineal, transformada de Fourier y números aleatorios
Pandas es para la manipulación y el análisis de datos . Pandas es una biblioteca de código abierto con licencia BSD que proporciona estructuras de datos y herramientas de análisis de datos fáciles de usar y de alto rendimiento para el lenguaje de programación Python .
Pandas es un proyecto patrocinado por NumFOCUS . Esto ayudará a garantizar el éxito del desarrollo de pandas como un proyecto de código abierto de clase mundial y hace posible la donación al proyecto. Matplotlib es una biblioteca de trazado 2D de Python que produce cifras de calidad de publicación en una variedad de formatos de copia impresa y entornos interactivos en todas las plataformas.
Matplotlib se puede usar en secuencias de comandos de Python, los shells de Python e IPython , el cuaderno Jupyter , servidores de aplicaciones web y cuatro kits de herramientas de interfaz gráfica de usuario. Seaborn es una biblioteca de visualización de datos de Python basada en matplotlib .
Proporciona una interfaz de alto nivel para dibujar gráficos estadísticos atractivos e informativos.
Advertencia Los mensajes normalmente se emiten en situaciones en las que es útil alertar al usuario de alguna condición en un programa, donde esa condición (normalmente) no garantiza generar una excepción y finalizar el programa. Por ejemplo, uno podría querer emitir una advertencia cuando un programa usa un módulo obsoleto.
Importar el conjunto de datos
Información del conjunto de datos
Al usar Pandas, importamos nuestro conjunto de datos y el archivo que usé aquí es un archivo .csv [Nota: no es necesariamente cada vez que trata con un archivo CSV , a veces trata con Html o Xlsx (archivo de Excel) ].
Sin embargo, para acceder y utilizar rápidamente utilizamos archivos CSV debido a su peso ligero. Después de importar el conjunto de datos, puede ver que usamos la función de cabeza (Esta función devuelve las primeras n filas del objeto en función de la posición. Es útil para probar rápidamente si su objeto tiene el tipo correcto de datos. Por defecto, devuelve 5 filas.)
Es importante comprender el concepto de valores perdidos para administrar los datos con éxito. Si el investigador no maneja adecuadamente los valores faltantes, entonces puede terminar sacando una inferencia inexacta sobre los datos. Debido a un manejo inadecuado, el resultado obtenido por el investigador diferirá de aquellos en los que están presentes los valores perdidos.
Valores faltantes
Sí, lo ha visto, escriba este número 3720 que son sus valores faltantes en cada columna.
Puede ser o no haber leído en alguna parte, ver 7 técnicas para lidiar con los valores perdidos o 5 formas de lidiar con los valores perdidos. Pero, discutiré con usted solo esas dos formas que son las más prominentes.
Este método de preprocesamiento de datos se usa comúnmente para manejar los valores nulos. Aquí, eliminamos una fila en particular si tiene un valor nulo para una función en particular y una columna en particular si tiene más del 75% de valores faltantes.
Este método se recomienda solo cuando hay suficientes muestras en el conjunto de datos. Uno tiene que asegurarse de que después de que hayamos eliminado los datos, no se agregue ningún sesgo. Eliminar los datos conducirá a la pérdida de información que no dará los resultados esperados al predecir la salida.
Suelta los valores que faltan
Esta estrategia se puede aplicar en una característica que tiene datos numéricos como la columna del año o la columna de la meta del equipo local. Podemos calcular la media, la mediana o la moda de la característica y reemplazarla con los valores que faltan.
Esta es una aproximación que puede agregar varianza al conjunto de datos. Pero la pérdida de datos puede anularse con este método, que produce mejores resultados en comparación con la eliminación de filas y columnas. Reemplazar con las tres aproximaciones anteriores es un enfoque estadístico para manejar los valores faltantes. Este método también se conoce como fuga de datos durante el entrenamiento. Otra forma es aproximarlo con la desviación de los valores vecinos. Esto funciona mejor si los datos son lineales.
Reemplazar el valor faltante
La estrategia anterior es buena para datos numéricos. Pero, ¿qué sucede cuando a los datos categóricos les faltan valores?
Veamos ahora cómo lidiar con los datos categóricos. . . !
Ver los Datos Categóricos en País
Dado que los modelos de aprendizaje automático se basan en ecuaciones matemáticas, puede comprender intuitivamente que causaría algún problema si podemos mantener los datos categóricos en las ecuaciones porque solo querríamos números en las ecuaciones.
Entonces, necesitamos codificar la variable categórica…..
Al igual que en nuestro conjunto de datos, la columna País causará problemas, por lo que se convertirá en valores numéricos. Para convertir variables categóricas en datos numéricos, podemos usar la clase LabelEncoder() de la biblioteca de preprocesamiento.
Ver los datos categóricos
Use la clase LabelEncoder para convertir datos categóricos en numéricos
label_encoder es un objeto que uso y nos ayuda a transferir datos categóricos a datos numéricos. A continuación, ajusté este objeto label_encoder a la primera columna de nuestra matriz X y todo esto devolvió el país de la primera columna de la matriz X codificada.
Pero hay un problema, el problema sigue siendo el mismo, los modelos de aprendizaje automático se basan en ecuaciones y es bueno que hayamos reemplazado el texto por números para poder incluir los números en las ecuaciones.
Sin embargo, dado que 1>0 y 2>1 (consulte el conjunto de datos anterior), las ecuaciones en el modelo pensarán que España tiene un valor más alto que Alemania y Francia, y Alemania tiene un valor más alto que Francia.
En realidad, este no es el caso, estas son en realidad tres Categorías y no hay un orden relacional entre las tres. Entonces, tenemos que evitar esto, vamos a usar lo que son variables ficticias.
Las variables ficticias son aquellas que toman el valor 0 o 1 para indicar la ausencia o presencia de algún efecto categórico que se puede esperar que cambie el resultado.
En lugar de tener una columna aquí arriba, vamos a tener tres columnas.
Número de columnas = Número de categorías
En nuestro caso vamos a tener 3 columnas.
// Para crear una variable ficticia, usaremos la clase OneHotEncoder de sklearn.preprocessing o puede usar el método pandas get dummies.
En el código anterior, ya explico cómo usar la clase OneHotEnCoder , ahora te mostraré con pandas cómo usar get_dummies() para crear variables ficticias.
Uso de pandas para crear variables ficticias
Concatenación
Vea cómo se ve nuestro conjunto de datos
A veces, usamos la imputación KNN (para variables categóricas): en este método de imputación, los valores faltantes de un atributo se imputan utilizando el número dado de atributos que son más similares al atributo cuyos valores faltan. La similitud de dos atributos se determina mediante una función de distancia.
En cualquier modelo de Machine Learning es que vamos a dividir el conjunto de datos en dos conjuntos separados
¿Por qué necesitamos dividir?
Bueno, aquí está su modelo de algoritmo que va a aprender de sus datos para hacer predicciones. Por lo general, dividimos el conjunto de datos en una proporción de 70:30 o 80:20, lo que significa, 70 por ciento de datos tomados en tren y 30 por ciento de datos tomados en prueba. Sin embargo, esta división puede variar según la forma y el tamaño del conjunto de datos.
Dividir el conjunto de datos en dos conjuntos: conjunto de entrenamiento y prueba
X_train es la parte de entrenamiento de la matriz de características.
X_test es la parte de prueba de la matriz de características.
y_train es la parte de entrenamiento de la variable dependiente que está asociada a X_train aquí.
y_test es la parte de prueba de la variable dependiente que está asociada a X_train aquí.
Paso 6: Escalado de características
El escalado de características es el método para limitar el rango de variables para que puedan compararse en términos comunes.
Supongamos que tenemos este conjunto de datos
Consulte la columna Edad y salario. Puede notar fácilmente que las variables Salario y Edad no tienen la misma escala y esto causará algún problema en su modelo de aprendizaje automático.
Porque la mayoría de los modelos de aprendizaje automático se basan en la distancia euclidiana .
fórmula euclidiana
Digamos que tomamos dos valores de la columna Edad y Salario
Edad- 40 y 27
Salario- 72000 y 48000
Uno puede calcular fácilmente y ver que la columna Salario estará dominada en la Distancia euclidiana. Y no queremos esta cosa.
Por lo tanto, hay varias formas de escalar sus datos. Referencia
Imagen tomada de Wikipedia
Escalado de características
Después de Feature Scaling, todos los valores entran en la misma escala
Nota: A veces, los modelos de máquinas no se basan en distancias euclidianas, aún necesitaremos escalar características porque el algoritmo convergerá mucho más rápido. Ese será el caso de Decision Tree, que no se basa en ED pero, si no escalamos las características, se ejecutarán durante mucho tiempo.
Así que ese es nuestro final con la fase de preprocesamiento de datos y espero que les guste este artículo. . . !! Tenga en cuenta que no he incluido el tema de los valores atípicos y he tomado un conjunto de datos muy simple para que lo entienda todo. Por favor, siéntase libre de comentar y dar algunos aplausos. Si tiene algún problema o consulta sobre cualquier tema relacionado con la ciencia de datos, hágamelo saber en la sección de comentarios.
Compartiré más conceptos pronto en la columna Article de LinkedIn.com , así como en Medium .
Mohit Sharma (los hombres que quieres ser & Co.)
[email protected] / Telegram