Skip to content

Commit

Permalink
Agregando los notebooks exploratorios y el predictor-dl-outputs.ipynb…
Browse files Browse the repository at this point in the history
… de la última ejecución del model de deep learning
  • Loading branch information
EdwinFLopez committed Jun 18, 2024
1 parent 6c1caa0 commit e30035c
Show file tree
Hide file tree
Showing 6 changed files with 14,787 additions and 65 deletions.
11 changes: 5 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Práctica de minería de datos sobre 3 tipos de algoritmos de predicción, usand

* 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`
* DeepLearning con **DNN**: en notebooks `predictor-dl.ipynb` y con la última ejecución: `predictor-dl-outputs.ipynb`

El objetivo de la predicción es evaluar si un canto de ave pertenece a alguna de las especies observadas
en el entrenamiento.
Expand Down Expand Up @@ -112,9 +112,8 @@ Este archivo se usa para evitar el reprocesamiento de los audios para extraer lo

#### DeepLearning con **DNN**

```shell
$ python predictor-dl.py
```
En este caso, se utiliza un notebook jupyter. El notebook es `predictor-dl.ipynb`. En nuestro caso
utilizamos tanto PyCharm como VSCode para procesarlo y ejecutarlo.
El modelo entrenado se almacena en la ruta: `./data/DL_model_birds.h5`.

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.
Para ver los últimos cálculos generados, se debe cargar el notebook `predictor-dl-outputs.ipynb`.
784 changes: 784 additions & 0 deletions features_ext_svm.ipynb

Large diffs are not rendered by default.

1,839 changes: 1,839 additions & 0 deletions predictor-dl-outputs.ipynb

Large diffs are not rendered by default.

95 changes: 36 additions & 59 deletions predictor-dl.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
{
"metadata": {},
"cell_type": "markdown",
"source": "# Análisis Espectral de Sonidos de Pájaros Europeos"
"source": "# Clasificación de vocalizaciones de aves"
},
{
"metadata": {},
Expand Down Expand Up @@ -65,7 +65,7 @@
{
"cell_type": "markdown",
"metadata": {},
"source": "## Counting number of spectograms for each bird name"
"source": "## Conteo de espectrogramas por ave"
},
{
"cell_type": "code",
Expand Down Expand Up @@ -278,46 +278,38 @@
"source": [
"from keras.src.losses import SparseCategoricalCrossentropy\n",
"\n",
"# CNN model\n",
"model = models.Sequential([\n",
" layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 1)),\n",
" layers.MaxPooling2D((2, 2)),\n",
" layers.Conv2D(64, (3, 3), activation='relu'),\n",
" layers.MaxPooling2D((2, 2)),\n",
" layers.Conv2D(128, (3, 3), activation='relu'),\n",
" layers.MaxPooling2D((2, 2)),\n",
" layers.Conv2D(256, (3, 3), activation='relu'),\n",
" layers.Dropout(0.5),\n",
" layers.Flatten(),\n",
" layers.Dense(64, activation='relu'),\n",
" layers.Dropout(0.5),\n",
" layers.Dense(20) \n",
"])\n",
"\n",
"# Compile the model\n",
"model.compile(optimizer='adam', loss=SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy'])\n",
"\n",
"# Train the model\n",
"model.fit(X_train, y_train, epochs=35)\n"
],
"outputs": [],
"execution_count": null
},
{
"cell_type": "code",
"metadata": {},
"source": "model.save(os.path.abspath(\"./data/DL_model_birds.h5\"))",
"outputs": [],
"execution_count": null
},
{
"cell_type": "code",
"metadata": {},
"source": [
"from tensorflow.keras.models import load_model \n",
"\n",
"# Load the model\n",
"loaded_model = load_model(os.path.abspath(\"./data/DL_model_birds.h5\"))"
"# Si el modelo no existe, entrenarlo y guardarlo,\n",
"if not os.path.exists(os.path.abspath(\"./data/DL_model_birds.h5\")):\n",
" # CNN model\n",
" model = models.Sequential([\n",
" layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 1)),\n",
" layers.MaxPooling2D((2, 2)),\n",
" layers.Conv2D(64, (3, 3), activation='relu'),\n",
" layers.MaxPooling2D((2, 2)),\n",
" layers.Conv2D(128, (3, 3), activation='relu'),\n",
" layers.MaxPooling2D((2, 2)),\n",
" layers.Conv2D(256, (3, 3), activation='relu'),\n",
" layers.Dropout(0.5),\n",
" layers.Flatten(),\n",
" layers.Dense(64, activation='relu'),\n",
" layers.Dropout(0.5),\n",
" layers.Dense(20) \n",
" ])\n",
" \n",
" # Compilar el modelo\n",
" model.compile(optimizer='adam', loss=SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy'])\n",
" \n",
" # Entrenar el modelo\n",
" model.fit(X_train, y_train, epochs=35)\n",
" \n",
" # Guardar el modelo\n",
" model.save(os.path.abspath(\"./data/DL_model_birds.h5\"))\n",
" print(f\"Modelo guardado exitosamente en {os.path.abspath('./data/DL_model_birds.h5')}\")\n",
"else:\n",
" from tensorflow.keras.models import load_model\n",
" # cargar el modelo\n",
" model = load_model(os.path.abspath(\"./data/DL_model_birds.h5\"))\n",
" print(f\"Cargamos el modelo desde el archivo {os.path.abspath('./data/DL_model_birds.h5')}\")"
],
"outputs": [],
"execution_count": null
Expand Down Expand Up @@ -458,18 +450,10 @@
"metadata": {},
"cell_type": "code",
"source": [
"from utils import CLASS_NAMES\n",
"\n",
"# Confusion matrix\n",
"cm = confusion_matrix(y_test, y_pred)\n",
"\n",
"# Assuming 'class_names' is a list containing your class labels\n",
"# class_names = [\"Acrocephalus arundinaceus\", \"Acrocephalus melanopogon\", \"Acrocephalus scirpaceus\",\n",
"# \"Alcedo atthis\", \"Anas platyrhynchos\", \"Anas strepera\", \"Ardea purpurea\",\n",
"# \"Botaurus stellaris\", \"Charadrius alexandrinus\", \"Ciconia ciconia\",\n",
"# \"Circus aeruginosus\", \"Coracias garrulus\", \"Dendrocopos minor\",\n",
"# \"Fulica atra\", \"Gallinula chloropus\", \"Himantopus himantopus\",\n",
"# \"Ixobrychus minutus\", \"Motacilla flava\", \"Porphyrio porphyrio\", \"Tachybaptus ruficollis\"]\n",
"\n",
"from utils import CLASS_NAMES\n",
"conf_matrix_df = pd.DataFrame(cm, index=CLASS_NAMES, columns=CLASS_NAMES)\n",
"\n",
"# Plot\n",
Expand All @@ -482,13 +466,6 @@
],
"outputs": [],
"execution_count": null
},
{
"metadata": {},
"cell_type": "code",
"source": "",
"outputs": [],
"execution_count": null
}
],
"metadata": {
Expand Down
173 changes: 173 additions & 0 deletions reading.ipynb

Large diffs are not rendered by default.

Loading

0 comments on commit e30035c

Please sign in to comment.