├── .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 |
--------------------------------------------------------------------------------