[PYTHON] Utilisez l'API Kaggle dans un conteneur Docker

Choses à faire

--Démarrez le conteneur en utilisant l'image officielle de Kaggle (kaggle / python) --Téléchargez le fichier csv avec la commande kaggle ~ --Téléchargez le notebook public avec la commande kaggle ~

Premier résumé

  1. DL kaggle.json (kaggle.com> Mon compte> bouton Créer un nouveau jeton API)
  2. $ docker run -it --rm --mount type=bind,src=pwd,dst=/root/dev kaggle/python
  3. $ pip install kaggle
  4. $ mkdir ~/.kaggle
  5. $ cp /root/dev/kaggle.json ~/.kaggle
  6. $ chmod 600 ~/.kaggle/kaggle.json
  7. $ kaggle competitions download -c titanic -p input/titanic
  8. $ unzip input/titanic/titanic.zip input/titanic
  9. $ kaggle kernels pull arthurtok/introduction-to-ensembling-stacking-in-python -p ./

Je télécharge l'ensemble de données de la compétition Titanic Si vous n'avez aucun problème, vous pouvez le fermer ici: détendu:

environnement

macOS 10.14.6 (Mojave) Docker 19.03.4

Pourquoi utiliser Docker?

--notebook instable --Je veux écrire du code avec VS Code --Je ne veux pas polluer l'environnement mondial --Collision entre pip et conda

Qu'est-ce que l'API Kaggle?

Un gars qui peut faire les opérations sur le site de Kaggle depuis la ligne de commande

Par exemple?

--Téléchargement de l'ensemble de données --Soumettre --Liste des compétitions disponibles --Télécharger le classement

etc…

Pour plus de détails, voir Official Repository

Liste des commandes


kaggle competitions {list, files, download, submit, submissions, leaderboard}
kaggle datasets {list, files, download, create, version, init}
kaggle kernels {list, init, push, pull, output, status}
kaggle config {view, set, unset}

Je vais faire une telle configuration

kaggle_titanic
├── input
│    └── titanic  <-Gagnez si vous pouvez télécharger le fichier csv ici
└── working  <-Gagnez si vous pouvez télécharger le fichier ipynb ici

Obtenir le jeton d'API Kaggle

Depuis Mon compte en haut à droite スクリーンショット 2019-11-27 9.25.02.png

C'est au milieu スクリーンショット 2019-11-27 9.28.42.png

kaggle.json sera téléchargé, donc enregistrez-le dans le répertoire kaggle_titanic. Le contenu est comme ça

kaggle.json


{"username":"anata_no_namae","key":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}

Au fait

Vous pouvez invalider le jeton ici Lorsque vous appuyez sur quelque chose comme "J'ai accidentellement poussé kaggle.json vers GitHub!" スクリーンショット 2019-11-27 9.41.17.png

Démarrage du conteneur

Image officielle de Kaggle Utilisez kaggle / python La commande suivante dans le répertoire kaggle_titanic

docker run -it --rm --mount type=bind,src=`pwd`,dst=/root/dev kaggle/python

L'explication de l'option est écrite ici, si vous le souhaitez -> [[Explication avec image] Créez un environnement Anaconda avec Docker et utilisez VS Code dans le conteneur](https://qiita.com/komiya_____/items/96c14485eb035701e218#%E3%82%B3%E3%83%B3 % E3% 83% 86% E3% 83% 8A% E8% B5% B7% E5% 8B% 95)

De là sur la coque côté conteneur

Déplacer vers le répertoire monté

cd /root/dev

OK si le contenu est synchronisé

ls

input  kaggle.json  working

Installez le package kaggle

pip install kaggle

Vérifiez la version pour voir si cela fonctionne

kaggle -v

Traceback (most recent call last):
  File "/opt/conda/bin/kaggle", line 7, in <module>
    from kaggle.cli import main
  File "/opt/conda/lib/python3.6/site-packages/kaggle/__init__.py", line 23, in <module>
    api.authenticate()
  File "/opt/conda/lib/python3.6/site-packages/kaggle/api/kaggle_api_extended.py", line 149, in authenticate
    self.config_file, self.config_dir))
OSError: Could not find kaggle.json. Make sure it's located in /root/.kaggle. Or use the environment method.

je suis tellement fâché Vous dites quelque chose comme kaggle.json introuvable

Placer kaggle.json

Créez un répertoire ~ / .kaggle / et copiez-y kaggle.json ** * Le répertoire ~ / .kaggle / a peut-être été créé au moment de $ kaggle -v, mais ce n'est pas un problème **

mkdir ~/.kaggle # <-On vous dira peut-être que vous avez déjà un répertoire, mais ne vous inquiétez pas
cp /root/dev/kaggle.json ~/.kaggle

cette fois

kaggle -v

Warning: Your Kaggle API key is readable by other users on this system! To fix this, you can run 'chmod 600 /root/.kaggle/kaggle.json'
Kaggle API 1.5.6

Je peux l'utiliser, mais je suis toujours en colère Les autres utilisateurs peuvent lire la clé API, alors changez l'autorité

Changement d'autorisation

chmod 600 ~/.kaggle/kaggle.json 

Suivre ce qui est

kaggle -v
Kaggle API 1.5.6

Huh

C'est ennuyeux de le faire à chaque fois

La série de traitements ici peut être exécutée collectivement dans la cellule Il existe également une stratégie pour en faire un fichier et le réutiliser

kaggle_settings.ipynb


!pip install kaggle
!mkdir ~/.kaggle
!cp /root/dev/kaggle.json ~/.kaggle
!chmod 600 ~/.kaggle/kaggle.json

Téléchargeons les données

Spécifiez le nom du concours avec -c -p Spécifie le chemin de destination de l'enregistrement

kaggle competitions download -c titanic -p input/titanic
ls input/titanic

titanic.zip

titanic.zip a été téléchargé

Utilisez la notation sur l'URL pour le nom du concours

Par exemple, dans le concours «Severstal: Détection des défauts d'acier», ce スクリーンショット 2019-11-27 16.38.51.png

Dégivrer

Décompressez le fichier titanic.zip téléchargé

unzip input/titanic/titanic.zip -d input/titanic
ls input/titanic

gender_submission.csv  test.csv  titanic.zip  train.csv

Il y a 3 éléments, gender_submission.csv, test.csv et train.csv. Vous pouvez maintenant télécharger le jeu de données

Ensuite, essayez de tirer le cahier

La notation du cahier est ici スクリーンショット 2019-11-27 16.41.52.png

kaggle kernels pull arthurtok/introduction-to-ensembling-stacking-in-python -p ./working
ls ./working

introduction-to-ensembling-stacking-in-python.ipynb

Gagnant parce qu'il est tiré correctement

Il peut être pratique d'utiliser le code VS ensemble

Il est bon de pouvoir écrire du code avec intelligence ou sa propre liaison de clé

[Explication avec image] Créez un environnement Anaconda avec Docker et utilisez VS Code dans le conteneur

[Explication avec image] Convertir le code VS en Jupyter

Pour ceux qui veulent utiliser Jupyter

Ajout de l'option -p 8888: 8888 lors du démarrage du conteneur (associer les ports côté hôte et côté conteneur)

docker run -p 8888:8888 -it --rm --mount type=bind,src=`pwd`,dst=/root/dev kaggle/python

Et lancez jupyter avec ce genre de sentiment * L'explication des options est [ici](https://qiita.com/komiya_____/items/96c14485eb035701e218#dockerfile)
jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root --NotebookApp.token=''

Ouvrez localhost: 8888 depuis la barre d'adresse de votre navigateur et c'est OK

La fin

Merci d'avoir lu jusqu'au bout

Recommended Posts

Utilisez l'API Kaggle dans un conteneur Docker
Jusqu'à ce que vous utilisiez l'API Kaggle avec Colab
Transportez un conteneur Docker
Essayez le mode interactif Python dans un conteneur Docker
Flutter dans Docker - Comment créer et utiliser un environnement de développement Flutter dans un conteneur Docker
Exécutez Matplotlib sur un conteneur Docker
Utilisez l'API Flickr de Python
Comment supprimer un conteneur Docker
J'ai créé un conteneur Docker pour utiliser JUMAN ++, KNP, python (pour pyKNP).
Accéder à l'API Docker Remote avec des requêtes
Classe qui atteint l'API de DMM
Exécutez des fichiers Python dans un conteneur Docker sur un Raspbian distant via PyCharm
[Blender] Utilisez OpenGL depuis l'intérieur du script
Exécutez matplotlib sur un conteneur Windows Docker
Utiliser WebDAV dans un environnement Docker portable
Obtenez le nombre de tweets liés à un certain mot-clé à l'aide de l'API Twitter
Création d'un wrapper Python pour l'API Qiita
Utilisez le dernier pip dans un environnement virtualenv
Obtenons les informations Wiki en utilisant l'API MediaWiki
Comment utiliser l'API Google Cloud Translation
Entrez dans stdin du conteneur Docker en cours d'exécution
Utilisez le module de papier électronique comme liste de tâches
Utiliser python dans le conteneur Docker comme interpréteur Pycharm
Utilisez le conteneur de développement Docker facilement avec VS Code
Utiliser l'API JIRA
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) à l'aide de VS Code + Remote Containers
Utilisez l'API Twitter pour réduire le temps nécessaire à Twitter (créer une chronologie de mise en évidence (comme))
Utilisons l'API de la fenêtre générale des statistiques gouvernementales (e-Stat)
Utilisons la version Python du module API Confluence.
Créez une carte thermique de tweet avec l'API Google Maps
Lancer Django sur un conteneur Docker à l'aide de docker-compose up
Comment publier un ticket depuis l'API Shogun
Créez un conteneur Docker et enregistrez le png depuis altair
[Python] Utilisez l'API Face de Microsoft Cognitive Services
Regardez de plus près le tutoriel Kaggle / Titanic
Créer un environnement de développement d'API rapide léger à l'aide de Docker