├── .gitignore ├── EDA_ML ├── EDA_ML.ipynb └── dataset │ ├── hospitalizaciones_test.csv │ └── hospitalizaciones_train.csv ├── Pipeline └── Mejor_pipeline.pkl ├── README.md └── resultado_pred └── MaxiDS.csv /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | 4 | # Eleventy build 5 | _dist 6 | _cache 7 | /_src/localStyles 8 | -------------------------------------------------------------------------------- /Pipeline/Mejor_pipeline.pkl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaxiDS/Datathon-Machine-Learning/95421572a8980e157b234b7ca3ce4d528cbfc11d/Pipeline/Mejor_pipeline.pkl -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #

**`Datathon - Machine Learning`**

2 | #

**Proyecto de clasificacion con ML**

3 |

4 | 5 |

6 | 7 |
8 | 9 | ## **TABLA DE CONTENIDO** 10 | + 1-Introducción. 11 | + 2-Objetivo de trabajo. 12 | + 3-Principales tecnologías utilizadas. 13 | + 4-Plan de Acción. 14 | + 5-Observaciones. 15 | + 6-Conclusiones. 16 | 17 |
18 | 19 | ## **1-Introducción** 20 | 21 | Hola! 👋 mi nombre es Lucas Maximiliano Seidl y este repositorio contiene mi proyecto individual para el "Datathon - Machine Learning" de la carrera de Data Science en la academia Henry. 22 | En este trabajo cree un modelo que puede predecir, a partir de ciertos datos, si un paciente va a permanecer en el hospital durante más o menos de 8 días. 23 | 24 |
25 | 26 | ## **2-Objetivo de trabajo** 27 | 28 | Un importante Centro de Salud lo ha contratado con el fin de poder predecir si un paciente tendrá una estancia hospitalaria prolongada o no. Para ello tenemos dos archivos csv, uno "train" con el cual vamos a entrenar nuestro modelo de ML y "test" en el cual vamos a aplicar el modelo realizado y conseguir las predicciones. 29 | 30 | + Análisis exploratorio de los datos (EDA). 31 | 32 | + División de dataset en train y test utilizando train_test_split, CV, KFold o similares. 33 | 34 | + Entrenamiento y predicción utilizando un Modelo de Machine Learning adecuado al problema (clasificación o regresión). 35 | 36 | + Utilización de Pipelines en la producción del modelo. 37 | 38 | + Comentarios y redacción con la fundamentación de la solución propuesta, escrita en Markdown en el Jupyter Notebook (.ipynb) o bien en un documento aparte. 39 | 40 |
41 | 42 | ## **3-Principales tecnologías utilizadas** 43 |

44 | 45 | 46 |

47 | 48 | - Python 🐍 49 | Es un lenguaje de programación ampliamente utilizado en las aplicaciones web, el desarrollo de software, la ciencia de datos y el machine learning (ML). 50 | https://docs.python.org/3/ 51 | - Scikit-learn 🤖 52 | Es una biblioteca de aprendizaje automático de software gratuito para el lenguaje de programación Python. https://scikit-learn.org/stable/ 53 | - Pandas 🐼 54 | Es una librería de Python especializada en la manipulación y el análisis de datos. Ofrece estructuras de datos y operaciones para manipular tablas numéricas y series temporales, es como el Excel de Python. https://pandas.pydata.org/docs/ 55 | - Numpy 🧮 56 | NumPy es una biblioteca para el lenguaje de programación Python que da soporte para crear vectores y matrices grandes multidimensionales, junto con una gran colección de funciones matemáticas de alto nivel para operar con ellas. https://numpy.org/doc/ 57 | - Matplotlib 📈 58 | Es una biblioteca para la generación de gráficos en dos dimensiones, a partir de datos contenidos en listas o arrays en el lenguaje de programación Python. 59 | https://matplotlib.org/stable/index.html 60 | - Seaborn 📊 61 | Es una librería de visualización de datos para Python desarrollada sobre matplotlib . https://seaborn.pydata.org/ 62 | - Scipy 🔬 63 | Es una biblioteca libre y de código abierto para Python. Se compone de herramientas y algoritmos matemáticos. https://docs.scipy.org/doc/scipy/ 64 | - Pipeline ♻ 65 | La clase Pipeline de Scikit-learn está diseñada como una forma manejable de aplicar una serie de transformaciones de datos seguidas por la aplicación de un estimador 66 | https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html 67 | 68 |
69 | 70 | ## **4-Plan de Acción** 71 | 72 | 73 |

74 | 75 |

76 | 77 | 78 | Un breve resumen de lo que se comenta en el notebook es que se llevó a cabo un análisis exploratorio de los datos (EDA), en el que se verificaron los valores nulos y duplicados, y se controló la correlación entre las variables mediante la prueba chi2_contingency. Luego, se normalizaron los datos utilizando OneHotEncoder y LabelEncoder. 79 | 80 | Se entrenaron los modelos X e Y, obteniendo mejores resultados con un random_state=32. Se utilizó un Pipeline para comparar el rendimiento de decisiontreeclassifier y regresión logística, y se seleccionó decisiontreeclassifier como el mejor modelo. 81 | 82 | Posteriormente, se utilizó grid search para ajustar los parámetros del modelo y mejorar su rendimiento una vez en producción. Finalmente, se implementó el modelo entrenado para predecir el conjunto de datos "csv test" y se generó un archivo csv con los resultados, que se subió con el nombre "MaxiDS". 83 | 84 |
85 | 86 | ## **5-Observaciones** 87 | 88 | Se aplicó LabelEncoder en lugar de OneHotEncoder a las columnas "Age" y "Severity of Illness" porque esto mejoró la precisión del modelo. Se decidió no eliminar la columna "Admission_Deposit" después de realizar pruebas ya que esto también mejoró el rendimiento del modelo. 89 | 90 | Cuando se definen X_train e Y_train, se obtienen mejores resultados con un random_state=32. El uso de grid search nos permitió encontrar los siguientes parámetros óptimos para mejorar nuestro árbol de decisión: 'criterion': 'gini', 'max_depth': 19, 'random_state': 32, 'splitter': 'best'. 91 | 92 | Finalmente, nuestro modelo en producción tuvo un rendimiento de Recall del 81,16% y Accuracy del 77,07% cuando se utilizó "csv test" como conjunto de datos de prueba. 93 | 94 |
95 | 96 | ## **6-Conclusiones** 97 | 98 | Este trabajo me permitió ampliar mis conocimientos en programación y en el uso de librerías de machine learning como Sklearn y Scipy. Aprendí a mejorar el rendimiento de un modelo utilizando grid search y a profundizar en el uso de árboles de decisión. Me siento muy satisfecho de haber cumplido con los objetivos propuestos y de haber ampliado mis conocimientos en esta área. 99 |
100 | 101 |

102 | 103 |

104 | 105 | ¡Muchas gracias por leer mi trabajo!😁 Me alegra haber sido de tu interés. 106 | Te comparto mi linkedin para que podamos conectarnos y seguir en contacto: https://www.linkedin.com/in/maxi-seidl/ 107 | ¡Hasta pronto!👋 108 | 109 | --------------------------------------------------------------------------------