Como utilizar o API Kaggle no google colab

Uma forma interessante de interagir com o Kaggle é utilizando sua API. Com ela, fica mais facilitado o download de notebooks de outros usuários, datasets, avaliação e premiação das competições, submissão de notebooks, dentre outras funções.
Este artigo consiste em mostrar como utilizar esta API no google colab. Todo ele foi escrito baseado na própria documentação do Kaggle-API (documentação). Vamos dividir quatro simples tópicos:
- Conseguindo as credenciais;
- Instalando a ferramenta de linha de comando Kaggle-api;
- Como listar competições e notebooks;
- Importando conjuntos de dados
Conseguindo as credenciais
O primeiro passo é acessar sua conta no Kaggle e obter o arquivo de nome “kaggle.json”. Para isso basta clicar em “My account” no seu avatar no site da plataforma, e lá, busque a seção como na imagem abaixo. Click em “Create New API Token” (caso já tenha criado anteriormente, busque o arquivo “kaggle.json”, ou expire-o e gere novas credenciais).

O download das suas credenciais será feito. Agora vamos fazer o upload delas no google colab.
from google.colab import files files.upload()
Ao aparecer o ícone de escolha de arquivo, selecione o arquivo que foi baixado, anteriormente.
Instalando a ferramenta de linha de comando Kaggle-api
É necessário instalar uma ferramenta que nos ajuda a usar a API do Kaggle no google colab, vamos instala-la com o código abaixo.
!pip install kaggle --upgrade
Note que o uso da exclamação será necessário sempre no início, já que na verdade estão sendo usados linhas de comando e não código Python.
Após a instalação, teremos de criar um diretório oculto de nome “.kaggle”, copiar o arquivo “kaggle.json” para esta pasta criada. Abaixo, as duas primeiras linhas são responsáveis pela criação do diretório, bem como a cópia do arquivo, respectivamente. A ultima linha apenas serve para listar o que há na pasta oculta. Caso seja listado no nome do arquivo “kaggle.json” quer dizer que tudo correu de forma correta.
!mkdir -p ~/.kaggle !cp kaggle.json ~/.kaggle/ !ls ~/.kaggle
Como listar competições e notebooks
Agora, com tudo devidamente instalado e nos seus devidos lugares, vamos ver algumas boas funcionalidades desta API.
!kaggle competitions list
Acima podemos ver uma lista genérica com competições existentes na plataforma e suas respectivas datas de entrega, categoria, premio, quantidade de equipes inscritas e se o meu usuário esta inscrito nelas. Percebe-se que basta utilizar o comando “kaggle” e em seguida definir alguns parâmetros, que neste caso trata-se do “competitions” mais o “list”, ou seja, listar todas as competições. Automaticamente a API faz paginação dos resultados.
Para explorar mais funções, vamos utilizar os mesmo parâmetros da consulta anterior, e como adicional definir o preço da recompensa como variável que ordena essa lista de competições. Para isto apenas adicionamos “ — sort-by prize”
!kaggle competitions list --sort-by prize
Como exemplo, escolhemos a competição “birdsong-recognition”. Abaixo listamos os notebooks (kernels) referentes a ela. O parâmetro “ –page-size 10” diz que será retornado apenas dez resultados por página.
!kaggle kernels list --competition birdsong-recognition --page-size 10
Importando conjuntos de dados
Com a competição escolhida, vamos ver quais são os dados que estão contidas nesta competição. Em particular, este conjunto de dados é de cantos de pássaros, por isso a grande quantidade de arquivos .mp3. Para listar os dados, de forma muito semelhante a como temos feito até então, utilizamos o parâmetro “files” ao invés do “list”, acompanhado do nome da competição escolhida.
!kaggle competitions files birdsong-recognition
Resolvemos utilizar como exemplo o arquivo “trains.csv”. Este arquivo consiste em variáveis atrelada a cada arquivo de áudio na pasta “train_audio”. Junto a cada arquivo de áudio, existem variáveis como, qualidade do áudio, data de coleta, nota, dentre outras.
Com o comando abaixo, o arquivo .csv foi baixado.
!kaggle competitions download -f train.csv birdsong-recognition
Como forma de mostrar a praticidade, vamos agora refazer uma descritiva rápida utilizando o Pandas e o Seaborn. Tomamos como base o este notebook (em link).
import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt
Importamos os dados utilizando o pandas. Nota-se que o nome atribuindo ao arquivo é seguido da extensão .zip, o que não se torna um problema para que o Pandas possa realizar seu trabalho utilizando o método “read_csv”.
Criamos uma variável de ano para título de descrição dos dados.
df = pd.read_csv('train.csv.zip') df['year'] = df['date'].apply(lambda x: x.split('-')[0]) df.head(5)
Abaixo um gráfico de frequência de cantos de pássaros coletados ao longo dos anos da pesquisa. Aparentemente há algumas inconsistências.
plt.figure(figsize=(16, 6)) ax = sns.countplot(df['year'], palette="hls") plt.title("Year of the Audio Files Registration", fontsize=16) plt.xticks(rotation=90, fontsize=13) plt.yticks(fontsize=13) plt.ylabel("Frequency", fontsize=14) plt.xlabel("")
Por fim, veremos a frequência da qualidade de cada áudio no conjunto de dados de teste.
plt.figure(figsize=(16, 6)) ax = sns.countplot(df['pitch'], palette="hls", order = df['pitch'].value_counts().index) plt.title("Frequência de qualidade de som (pitch)", fontsize=16) plt.xticks(fontsize=13) plt.yticks(fontsize=13) plt.ylabel("Frequência", fontsize=14) plt.xlabel("");
Conclusão
Apesar de não ser crucial para criação de um trabalho no Kaggle, a sua API, facilita muitas tarefas. Aqui apenas fizemos uma breve demostração de um possível uso para ela. Vale lembrar que diversas outras funcionalidades seriam possíveis com esta API, inclusive submissão de notebooks e entrega de resultados preditivos. Pode ser bastante prático e conveniente para quem se disponha a aprender a utilizar esta ferramenta.
0 Comentários