Skip to content

Commit

Permalink
Agregando el contenido del README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
EdwinFLopez committed Apr 9, 2024
1 parent bd2c480 commit 9c6571e
Show file tree
Hide file tree
Showing 3 changed files with 122 additions and 4 deletions.
116 changes: 116 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 [email protected]: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.
4 changes: 2 additions & 2 deletions predictor-dl.py
Original file line number Diff line number Diff line change
Expand Up @@ -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...")
Expand Down
6 changes: 4 additions & 2 deletions predictor-ml.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'])
Expand Down

0 comments on commit 9c6571e

Please sign in to comment.