Herramienta para realizar limpieza, modelado y visualizacion de datos de manera sencilla.
Project description
Modulo eda.py: Manipulación de Datos
Las clases eda.EDA
y eda.Graphs_eda
son una herramienta para realizar manipulaciones y visualizaciones de datos de manera sencilla y eficiente. Estas clases están diseñadas para facilitar diversas tareas relacionadas con el procesamiento y limpieza de los datos.
Métodos Disponibles
Preprocesamiento de Datos (EDA)
-
EDA.eliminar_unitarios(df)
: Elimina las variables que tienen un solo valor en un DataFrame. -
EDA.eliminar_nulos_si(df, p)
: Elimina las columnas con un porcentaje de valores nulos mayor o igual ap
en un DataFrame. -
EDA.imputar_faltantes(df, metodo="mm")
: Imputa los valores faltantes en un DataFrame utilizando el método de la mediana para variables numéricas y el método de la moda para variables categóricas. También es posible utilizar el método de KNN (K-Nearest Neighbors) para imputar los valores faltantes. -
EDA.estandarizar_variables(df, metodo="zscore")
: Estandariza las variables numéricas en un DataFrame utilizando el método "z-score" (estandarización basada en la media y desviación estándar). Tambien estan disponibles otros metodos de estandarizacion 'minmax' y 'robust' -
EDA.balancear_datos(df, target)
: Realiza un muestreo aleatorio de los datos para balancear las clases en un problema de clasificación binaria. Esto ayuda a mitigar problemas de desequilibrio de clases en el conjunto de datos. -
EDA.mezclar_datos(df)
: Mezcla los datos en el DataFrame de forma aleatoria, lo que puede ser útil para dividir los datos en conjuntos de entrenamiento y prueba. -
EDA.estadisticos_numerico(df)
: Genera datos estadÃsticos de las variables numéricas en el DataFrame. -
EDA.convertir_a_numericas(df, target, metodo="ohe")
: Realiza la codificación de variables categóricas utilizando diferentes métodos. Ademas de "ohe" (one-hot-encode) se puede seleccionar "dummy" y "label" (label-encode) -
EDA.all_eda(...)
: Pipeline para realizar varios pasos (o todos) de la clase de forma automatica.
Visualización de Datos (Graphs_eda)
-
Graphs_eda.graficos_categoricos(df)
: Crea gráficos de barras horizontales para cada variable categórica en el DataFrame. -
Graphs_eda.grafico_histograma(df, x)
: Genera un histograma interactivo para una columna especÃfica del DataFrame. -
Graphs_eda.grafico_caja(df, x, y)
: Genera un gráfico de caja interactivo para una variable y en función de otra variable x. -
Graphs_eda.grafico_dispersion(df, x, y)
: Genera un gráfico de dispersión interactivo para dos variables x e y. -
Graphs_eda.grafico_dendrograma(df)
: Genera un dendrograma que es útil para determinar el valor de k (grupos) para usar con la imputacion knn.
Modulo ml.py: Modelado de Datos
Las clases ml.ML
, ml.Graphs_ml
y ml.Tools
son una herramienta para realizar modelados, manipulación y visualización de datos de manera sencilla y eficiente. Estas clases están diseñadas para facilitar diversas tareas relacionadas con el procesamiento, entrenamiento y evaluación de modelos de aprendizaje automático.
Modelado de Datos
-
ML.modelo_lightgbm(...)
: Utiliza LightGBM para predecir la variable objetivo en un DataFrame. Este método admite problemas de clasificación y regresión. -
ML.modelo_xgboost(...)
: Utiliza XGBoost para predecir la variable objetivo en un DataFrame. Este método también es adecuado para problemas de clasificación y regresión. -
ML.modelo_catboost(...)
: Utiliza CatBoost para predecir la variable objetivo en un DataFrame. Al igual que los métodos anteriores, puede manejar problemas de clasificación y regresión.
IMPORTANTE: si se pasa como parametro
grid=True
a cualquiera de estos modelos (ejemplo: model_catboost(..., grid=True...)), ahora se realiza una busqueda de hiperparametros aleatoria para reducir los tiempos de entrenamiento; ademas podemos pasarn_iter=...
con el numero que deseemos que el modelo pruebe de convinaciones diferentes de parametros (10 es la opcion por defecto).
Evaluación de Modelos
-
Metricas de Clasificación: Calcula varias métricas de evaluación para un problema de clasificación, como precisión, recall, F1-score y área bajo la curva ROC (AUC-ROC).
-
Metricas de Regresión: Calcula diversas métricas de evaluación para un problema de regresión, incluyendo el error cuadrático medio (MSE), el coeficiente de determinación (R-cuadrado ajustado), entre otros.
Selección de Variables y Clusters
-
Tools.importancia_variables(...)
: Calcula la importancia de las variables en función de su contribución a la predicción, utiliza Bosque Aleatorio (RandomForest) con validacion cruzada. Utiliza un umbral que determina la importancia mÃnima requerida para mantener una variable o eliminarla. -
Tools.generar_clusters(df)
: Aplica el algoritmo no-supervisado K-Means o DBSCAN a un DataFrame y devuelve una serie con el número de cluster al que pertenece cada observación. -
Tools.generar_soft_clusters(df)
: Aplica Gaussian Mixture Models (GMM) al dataframe para generar una tabla con las probabilidades de pertencia de cada observacion al cluster especifico. -
Graphs_ml.plot_cluster(df)
: Gráfico de codo y silueta que es escencial para determinar el número de clusters óptimo a utilizar en los métodos de clusters anteriores.
Modulo ts.py: Manipulación de Datos temporales
Las clases ts.Ts
, ts.Graphs_ts
y ts.Profeta
son una poderosa herramienta para realizar modelados, manipulación y visualización de datos temporales. Estas clases están diseñadas para facilitar diversas tareas relacionadas con los datos estadisticos de series temporales, asi como modelado y predicción de los mismo.
Métodos Disponibles
Clase TS
Cada método tiene su funcionalidad especÃfica relacionada con el análisis y la manipulación de series temporales. Puede utilizar estos métodos para realizar diversas tareas en datos de series temporales, incluida la carga de datos, el análisis estadÃstico, las pruebas de estacionariedad, la descomposición, la diferenciación, la transformación y el modelado SARIMA.
TS.datos_estadisticos(...)
: Este método calcula varias propiedades estadÃsticas de una serie temporal, como media, mediana, desviación estándar, mÃnimo, máximo, percentiles, coeficiente de variación, asimetrÃa y curtosis. Devuelve estas estadÃsticas como un diccionario.
TS.pruebas_raiz_unitaria(...)
: Este método realiza pruebas de raÃz unitarias para determinar si una serie temporal es estacionaria. Admite tres pruebas diferentes: Augmented Dickey-Fuller (ADF), Kwiatkowski-Phillips-Schmidt-Shin (KPSS) y Phillips Perron (PP). Devuelve información de diagnóstico y, si es necesario, realiza la diferenciación para hacer que la serie sea estacionaria.
TS.aplicar_descomposicion(...)
: Este método aplica la descomposición estacional a una serie temporal, separándola en tendencia, estacionalidad y residuos. Puede especificar el tipo de descomposición (aditiva o multiplicativa) y el perÃodo estacional.
TS.aplicar_diferenciacion(...)
: Este método realiza la diferenciación en una serie temporal para hacerla estacionaria. Puede especificar el número de perÃodos que va a diferenciar.
TS.aplicar_transformacion(...)
: Este método aplica transformaciones a una serie temporal. Admite tres métodos de transformación: Box-Cox, Yeo-Johnson y logarÃtmica. Devuelve la serie temporal transformada.
TS.modelo_sarima(...)
: Este método se ajusta a un modelo ARIMA estacional (SARIMA) a una serie temporal. Puede especificar los órdenes de modelo para autorregresivo (AR), diferenciación (d), media móvil (MA), autorregresivo estacional (SAR), diferenciación estacional (D), promedio móvil estacional (SMA) y los perÃodos estacionales. Devuelve los resultados de la adaptación del modelo SARIMA.
Clase Graphs_ts
Estos métodos son útiles para explorar y comprender datos de series temporales, identificar patrones y evaluar supuestos de modelos. Para utilizar estos métodos, debe pasar un DataFrame pandas que contenga datos de series temporales y especificar las columnas y parámetros relevantes.
Graphs_ts.graficar_autocorrelacion(...)
: Este método visualiza la función de autocorrelación (ACF), la función de autocorrelación parcial (PACF) y la ACF estacional de una serie temporal (Sacf y Spacf). Puede especificar el número de retrasos y el nivel de significación de las pruebas.
Graphs_ts.graficar_estacionalidad_tendencia_ruido(...)
: Este método descompone una serie temporal en su tendencia, estacionalidad y componentes residuales utilizando un modelo aditivo o multiplicativo. A continuación, traza estos componentes junto con la serie temporal original.
Graphs_ts.graficar_diagrama_caja(...)
: Este método genera y muestra diagramas de caja para visualizar datos agrupados por año, mes, dÃa, etc. Puede especificar la columna de tiempo, la columna de valor y la opción de agrupación.
Graphs_ts.graficar_correlograma(...)
: Este método crea y muestra un correlograma (gráfico de autocorrelación) para una serie temporal. Ayuda a identificar correlaciones entre diferentes retrasos en la serie.
Graphs_ts.graficar_profeta(...)
: Este método genera gráficos relacionados con un modelo de Profeta y sus predicciones. Puede elegir visualizar los componentes (tendencia, estacionalidad) o toda la predicción.
Clase Profeta:
Profeta.cargar_modelo_prophet(...)
: Este método carga un modelo de Prophet guardado previamente desde un archivo JSON. Puede especificar el nombre del archivo del modelo que se va a cargar.
Profeta.entrenar_modelo(...)
: Este método entrena y ajusta un modelo de Profeta para el pronóstico de series temporales.
Instalación
Para utilizar las clases ML
, EDA
, Graphs_ml
, Graphs_eda
, Tools
, simplemente importa la clase en tu código (primero instalar con pip pip install ale-uy
):
from ale_uy.eda import EDA, Graphs_eda
from ale_uy.ml import ML, Tools, Graphs.ml
from ale_uy.ts import TS, Graphs_ts, Profeta
Ejemplo de Uso
Aquà tienes un ejemplo de cómo usar la clase EDA y ML para realizar un preprocesamiento de datos y entrenar un modelo de LightGBM para un problema de clasificación binaria (IMPORTANTE: Colocar los archivos eda.py y ml.py en la carpeta donde estes trabajando si es que no instalaste via pip):
# Importar los modulos ml y eda con sus respectivas clases
from ale_uy.ml import ML, Tools, Graphs_ml
from ale_uy.eda import EDA, Graphs_eda
# Cargar los datos en un DataFrame
data = pd.read_csv(...) # Tu DataFrame con los datos
# Preprocesamiento de datos con la viariable objetivo llamada 'target'
preprocessed_data = EDA.all_eda(data, target='target')
# Entrenar el modelo LightGBM de clasificación y obtener sus metricas
ML.modelo_lightgbm(preprocessed_data, target='target', tipo_problema='clasificacion')
# Si el modelo se adapta a nuestras necesidades, podemos guardarlo simplemente agregando el atributo 'save_model=True'
ML.modelo_lightgbm(preprocessed_data, target='target', tipo_problema='clasificacion', save_model=True)
# Se guardara como "lightgbm.pkl"
Para usar el modelo guardado con nuevos datos, usaremos el siguiente codigo
import joblib
# Ruta y nombre del archivo donde se guardó el modelo
model_filename = "nombre_del_archivo.pkl"
# Cargar el modelo
loaded_model = joblib.load(model_filename)
# Ahora puedes utilizar el modelo cargado para hacer predicciones
# Supongamos que tienes un conjunto de datos 'X_test' para hacer predicciones
y_pred = loaded_model.predict(X_test)
Contribución
Si encuentras algún problema o tienes ideas para mejorar estas clases, ¡no dudes en contribuir! Puedes hacerlo enviando pull requests o abriendo issues en el Repositorio del Proyecto.
¡Gracias por tu interés! Espero que sea una herramienta útil para tus proyectos de aprendizaje automático. Si tienes alguna pregunta o necesitas ayuda, no dudes en preguntar. ¡Buena suerte en tus proyectos de ciencia de datos y aprendizaje automático!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ale-uy-1.2.0.tar.gz
.
File metadata
- Download URL: ale-uy-1.2.0.tar.gz
- Upload date:
- Size: 33.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 339a5295b82afb54606c8beb6d0b71ab1ff21300af8781a4b11beeb662f537e6 |
|
MD5 | b8f636f0634cca588502f65a354c8952 |
|
BLAKE2b-256 | b8f4d5adeef35ec6c90a20545a9adcd31c1744ecc408c8f005dccfff0bf07fd3 |
File details
Details for the file ale_uy-1.2.0-py3-none-any.whl
.
File metadata
- Download URL: ale_uy-1.2.0-py3-none-any.whl
- Upload date:
- Size: 31.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ca65afd94aba7111a9892155cc653cf97992f04cd5335ee3107fbcfe37c2f15 |
|
MD5 | 88941836f5710fb393b408e8e1579e6b |
|
BLAKE2b-256 | 79d3f14adf654e67b3d38ce9c6a7b0c245622f7a05b520318f2e1858240ff811 |