Есть ли какая-либо команда для загрузки данных из определенной папки из Kaggle Competition с использованием kaggle API - PullRequest
1 голос
/ 09 марта 2020

Я пытаюсь загрузить данные из Kaggle Competition State-Farm-Distracted-Driver-Detection

Набор данных имеет следующую структуру каталогов

|-driver_imgs_list.csv
|-sample-submission.csv
|imgs
|   |test
|   |train
|       |c0
|       |c1
|       |c2
|          |-img_100029.jpg
|          |-img_100108.jpg

I хочу только папку imgs / train / c2 скачать. Я знаю, как загрузить полный набор данных и отдельные файлы, но я не могу понять, как загрузить определенную папку с помощью API

Изначально я пытался использовать Kaggle CLI API, используя это, я могу загрузить конкретное изображение следующим образом

kaggle competitions download state-farm-distracted-driver-detection -f imgs/train/c2/img_100029.jpg

Но когда я попробовал следующую команду для загрузки папки c2, я получаю сообщение об ошибке типа Файл не найден

kaggle competitions download state-farm-distracted-driver-detection -f imgs/train/c2
404 - Not Found

Есть ли команда для скачать определенную папку с соревнований в kaggle api ??

В качестве еще одной пробной версии я использовал Kaggle API из python для загрузки этой папки

Моя идея в том, что существует файл с именем "driver_imgs_list. csv ", который содержит имена классов, такие как (c0, c1, c2 ..) вместе с соответствующими файлами изображений. Поскольку я хочу загрузить папку класса c2, я сохранил файлы изображений класса c2 в массиве, используя pandas. Затем я попытался загрузить каждый файл с помощью a для l oop следующим образом

from kaggle.api.kaggle_api_extended import KaggleApi
import pandas as pd
api = KaggleApi()
api.authenticate()

data = pd.read_csv("driver_imgs_list.csv")

images = data[data["classname"] == "c2"]["img"]   #It will give me all image file names under c2 folder

imgArray=[]
for i in images:
   imgArray.append(i)

for i in imgArray:
   file = "imgs/train/c2/{i}".format(i=i)
   api.competition_download_file('state-farm-distracted-driver-detection',file,quiet = False,force = True)

Даже при использовании приведенного выше кода я получаю ту же ошибку, что и файл, не найденный следующим образом

HTTP response body: b'{"code":404,"message":"NotFound"}'

Как загрузить определенную папку либо с помощью Kaggle CLI API, либо с python

1 Ответ

0 голосов
/ 12 марта 2020

Может ли быть, что сообщение об ошибке истинно, и что файл действительно не находится в папке набора данных?

Другая идея состоит в том, что это связано с порядком (?), Потому что я смог чтобы ваш код работал при использовании .sort_values() в именах изображений 'Series:

data = pd.read_csv('driver_imgs_list.csv')
filenames = 'imgs/train/c2/' + data[data['classname'] == 'c2']['img'].sort_values()

for filename in filenames:
    api.competition_download_file('state-farm-distracted-driver-detection', filename)

Однако я разрешаю запускать его только для 10 файлов. И снова может случиться так, что существует несоответствие между файлами в файле CSV и файлами, фактически доступными в наборе данных.

...