Nathaly Alarcón
Feb 3, 2019 · 4 min read

Resolviendo un reto de Kaggle desde Colab

La Datathon de Women in Data Science este año es un reto de clasificación, donde se busca aprender a identificar en imágenes satelitales de áreas tropicales la existencia ó no plantaciones de palma.

has_oilpalm =1 (Si en la imagen satelital existe plantaciones de palma aceitera)
has_oilpalm = 0 (Si en la imagen satelital no existe plantaciones de palma aceitera)

Empezaremos a analizar el dataset de la competencia desde Google Colab. La primera tarea es: Cargar el dataset en el entorno de Colab. Para ello existen varias opciones, en este caso haremos uso del API de Kaggle.

Comando de Kaggle para descargar el dataset a través del API.

Para hacer uso del API de Kaggle desde otro entorno, es necesario que descarguemos el API Key file de nuestra cuenta de usuario.

Ve a “My Account” y en la sección de “API” selecciona la opción “Create New API Token”.

Cuando selecciones la opción “Create New API Token” se descargará de manera automática el archivo: kaggle.json; Es requisito para el uso del API que este archivo vaya en la ruta: ~/.kaggle/kaggle.json .

Contenido del archivo kaggle.json

Empecemos con nuestro notebook en Colab. Inicialmente llamemos a las librerías básicas necesarias.

# Required libraries
import json
import zipfile
import os
import pandas as pd
from PIL import Image
import random

Definamos la ruta de la carpeta en la que trabajaremos. Para Colab la ruta es:

root_path = ‘/content’

Ahora crearemos el archivo kaggle.json. Es importante que en la siguiente celda, reemplaces tu username y token obtenido en los pasos previos.

!pip install kaggle
!mkdir ~/.kaggle
!touch ‘/root/.kaggle/kaggle.json’
###############################################
# IMPORTANTE
# Copia en la siguiente línea el contenido de tu archivo kaggle.json
api_token = {“username”:”username”,”key”:”TOKEN_HERE”}
###############################################
with open(‘/root/.kaggle/kaggle.json’, ‘w’) as file:
json.dump(api_token, file)
!chmod 600 /root/.kaggle/kaggle.json

Ya estamos listos para descargar el dataset en Colab.

!kaggle competitions download -c widsdatathon2019

Actualiza la sección de archivos de Colab y observa que el contenido del dataset ya se encuentra disponible en nuestro entorno.

Contenido del dataset de Kaggle en Colab

Ahora procedamos a descomprimir las carpetas que contienen las imágenes satelitales.

for file in os.listdir():
if file.endswith(‘.zip’):
zip_ref = zipfile.ZipFile(file, ‘r’)
zip_ref.extractall()
zip_ref.close()

¡Ya estamos listos para empezar con el análisis de los datos! :)

Empecemos analizando el archivo de traininglabels.csv :

df_training = pd.read_csv(root_path+’/traininglabels.csv’)
tr_nsamples = len(df_training)
print(“Nro de registros en el dataset de training: “, tr_nsamples)
df_training.head()
Contenido del archivo: traininglabels.csv

Ahora vamos a visualizar imágenes aleatorias del dataset en el notebook:

# Visualize random samples
n_sample = random.randint(0,(tr_nsamples — 1))
print(“Sample id:”, n_sample)print(df_training.iloc[n_sample])
Image.open(root_path+’/train_images/’+df_training.iloc[n_sample][‘image_id’])
Imágenes aleatorias del dataset. A la derecha la imagen contiene plantaciones de palma (has_oilpalm = 1). A la izquierda la imagen no contiene plantaciones de palma (has_oilpam = 0)

Dependiendo de la librería que usemos para entrenar nuestros modelos, en muchos casos será necesario separar las imágenes en función a las clases a las que pertenecen. Para ello crearemos una carpeta con el nombre de “training_ready” y en su interior vamos a crear una carpeta para cada clase (Recordemos que las clases son 0 y 1, dependiendo si contienen o no plantaciones de palma aceitera).

tr_path = root_path+’/training_ready’
tr_path_train_im = root_path+’/train_images’
os.makedirs(tr_path, exist_ok=True)for index, row in df_training.iterrows():
tr_class = row[‘has_oilpalm’]
tr_image = row[‘image_id’]
# Create the class folder if it doesn’t exists yet.
os.makedirs(tr_path+’/’+str(tr_class), exist_ok=True)
# Copy files
os.system(‘cp ‘+tr_path_train_im+’/’+tr_image+’ ‘+tr_path+’/’+str(tr_class)+’/’+tr_image)
Imágenes de training separadas en sus respectivos folders.

Y listo! tenemos todo lo necesario para empezar a entrenar nuestros modelos.

Te dejo el link al notebook en GitHub: https://github.com/nathalyAlarconT/WiDS_Datathon_2019/blob/master/WiDS_Datathon2019_BasicDataAnalysis.ipynb
Y el link del notebook en Colab:
https://colab.research.google.com/github/nathalyAlarconT/WiDS_Datathon_2019/blob/master/WiDS_Datathon2019_BasicDataAnalysis.ipynb
(Para que puedas ejecutar el notebook de Colab, guarda una nueva copia en tu Google Drive).

Lo bonito de ser parte de una comunidad, es que tienes la oportunidad de compartir conocimiento y aprender de una manera interactiva y divertida. Síguenos en nuestras redes sociales para que estés al tanto de nuestras actividades.

WiDSLaPaz

Somos parte de la comunidad global de Mujeres en Ciencia de…

WiDSLaPaz

Somos parte de la comunidad global de Mujeres en Ciencia de Datos #WiDS2018 Buscamos la democratización de Inteligencia Artificial y Machine Learning.

Nathaly Alarcón

Written by

I code in my sleep - ♡ I love Coffee ♡ - Data Scientist

WiDSLaPaz

Somos parte de la comunidad global de Mujeres en Ciencia de Datos #WiDS2018 Buscamos la democratización de Inteligencia Artificial y Machine Learning.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store