From 9c6571e16b3a3ead9251f436dbd0148df54f2189 Mon Sep 17 00:00:00 2001 From: "Edwin F. Lopez" Date: Tue, 9 Apr 2024 13:06:17 +0200 Subject: [PATCH] Agregando el contenido del README.md --- README.md | 116 ++++++++++++++++++++++++++++++++++++++++++++++++ predictor-dl.py | 4 +- predictor-ml.py | 6 ++- 3 files changed, 122 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3660a1c..c0dbc4c 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,119 @@ Práctica 01 - Minería de Datos - Master Big Data ## Introducción + +Práctica de minería de datos sobre 3 tipos de algoritmos de predicción, usando aprendizaje de máquinas: + +* Machine learning con **SVC**: en script `predictor-ml.py` +* Ensemble con **RandomForest**: en script `predictor-en.py` +* DeepLearning con **DNN**: en script `predictor-dl.py` + +El objetivo de la predicción es evaluar si un canto de ave pertenece a alguna de las especies observadas +en el entrenamiento. + +Se utilizan los datos de audio y de espectrografía **Western Mediterranean Wetlands Bird Dataset**, +descargable desde: https://zenodo.org/record/7505820#.Y8U4f3bMKUk + +## Preparación + +1. Antes de iniciar, se debe contar con git, y descargar el código del repositorio github. +2. Se debe iniciar un ambiente virtual de python para instalar las dependencias. +3. Se proporciona un script para descargar el dataset y los archivos de soporte. +4. Se debe ejecutar el script adecuado, según se quiera ver la ejecución de cada caso. + +## Ejecución paso a paso + +### Descargar repositorio + +Se debe contar con git instalado localmente para descargar el repo: + +```shell +git clone git@github.com:EdwinFLopez/mbd-datamining-p01.git +``` + +En caso de no tener git instalado, se puede descargar un zip de la siguiente url: +https://github.com/EdwinFLopez/mbd-datamining-p01/archive/refs/heads/main.zip + +### Instalar ambiente virtual + +Para ejecutar los scripts, se deben proporcionar las dependencias adecuadas. +Con este propósito debemos crear un ambiente virtual. + +#### Si se usa conda: + +```shell +$ conda create -n practica-mdd python=3.12 +$ conda activate practica-mdd +``` +Las dependencias quedarán instaladas en el folder `~/.conda/practica-mdd`. + +Más información en: https://www.anaconda.com/open-source + +#### Usando python venv + +Se debe entrar en el folder donde se descargó el repo. + +```shell +$ cd mbd-datamining-p01 +$ python -m venv venv +$ source venv/bin/activate +``` + +### Instalar dependencias + +Una vez creado el ambiente virtual, se deben instalar las dependencias: + +```shell +$ pip install -r requirements.txt +``` + +### Descargar dataset + +Una vez activado el ambiente virtual y las dependencias instaladas, +procedemos a descargar el dataset. Los archivos zip serán descomprimidos +automáticamente por el script. + +```shell +$ python download-all.py +``` +Los archivos del dataset quedarán ubicados bajo el folder `data`. + +```shell +$ tree data +├── readme.txt +├── metadata.csv +├── audio_files.zip +├── spectrograms.zip +├── audio_files +│ └── ... +└── spectrograms + └── ... +``` + +### Ejecutar los scripts de predicción + +#### Machine learning con **Support Vector Machine (SVM)** + +```shell +$ python predictor-ml.py +``` +La primera vez que se ejecuta, crea un archivo del modelo `./data/birds_features.csv`. +Este archivo se usa para evitar el reprocesamiento de los audios para extraer los features. + +#### Ensemble con **RandomForest** + +```shell +$ python predictor-en.py +``` + +La primera vez que se ejecuta, crea un archivo del modelo `./data/birds_data_rf.csv`. +Este archivo se usa para evitar el reprocesamiento de los audios para extraer los features. + +#### DeepLearning con **DNN** + +```shell +$ python predictor-dl.py +``` + +La primera vez que se ejecuta, crea un archivo del modelo `./data/birds_data_dcnn.csv`. +Este archivo se usa para evitar el reprocesamiento de los espectogramas. diff --git a/predictor-dl.py b/predictor-dl.py index 0883cb5..3efe448 100644 --- a/predictor-dl.py +++ b/predictor-dl.py @@ -177,8 +177,8 @@ def base_dcnn_algorithm(data: pd.DataFrame) -> None: # ====================================================================================================================== if __name__ == '__main__': - cache_file = os.path.abspath("./data/birds_data_dcnn.csv") - metadata_path = os.path.abspath("./data/metadata.csv") + cache_file = os.path.abspath("./data/birds_data_dcnn-50.csv") + metadata_path = os.path.abspath("./data/metadata-50.csv") spectrogram_path = os.path.abspath("./data/spectrograms") print("Cargando metadata...") diff --git a/predictor-ml.py b/predictor-ml.py index 4aeee3b..7b02091 100644 --- a/predictor-ml.py +++ b/predictor-ml.py @@ -97,9 +97,11 @@ def load_features_dataframe(features_file: str, data_folder: str, reload: bool = # ====================================================================================================================== - if __name__ == "__main__": - df_feat = load_features_dataframe(os.path.abspath("./data/birds_features.csv"), os.path.abspath("./data/audio_files")) + features_file = os.path.abspath("./data/birds_features.csv") + audio_files = os.path.abspath("./data/audio_files") + + df_feat = load_features_dataframe(features_file, audio_files) # Training the Support Vector Machine (SVM) X = df_feat.drop(columns=['label'])