【问题标题】:documentation for Kaggle API *within* python?Kaggle API *within* python 的文档?
【发布时间】:2019-09-19 22:19:06
【问题描述】:

我想编写一个从 Kaggle.com 下载公共数据集的 python 脚本。

Kaggle API 是用 python 编写的,但我能找到的几乎所有文档和资源都是关于如何在命令行中使用 API,而关于如何在 python 中使用 kaggle 库的内容很少.

有些用户似乎知道如何做到这一点,例如见several answers to this question,但这些提示不足以解决我的具体问题。

也就是说,我有一个如下所示的脚本:

from kaggle.api.kaggle_api_extended import KaggleApi

api = KaggleApi('content of my json metadata file')

file = api.datasets_download_file(
    owner_slug='the-owner-slug',
    dataset_slug='the-dataset-slug',
    file_name='the-file-name.csv',
)

我通过查看方法的签名得出了这个结论:
api.datasets_download_file(owner_slug, dataset_slug, file_name, **kwargs)

我收到以下错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 12: invalid start byte

除了这个特定问题的解决方案之外,我真的很高兴知道如何解决 Kaggle 库的错误,而不是通过代码本身。事实上,也许这个问题与 utf-encoding 无关,但我不知道如何解决这个问题。如果只是文件名错误,或者像这样愚蠢的事情怎么办?

csv 文件没什么特别的:三列,第一列是时间戳,另外两列是整数。

【问题讨论】:

  • 你试过使用 Kaggle CLI 吗? (github.com/floydwch/kaggle-cli) 你已经可以下载数据集了。这是您可以用来下载文件的命令:kg download -u <username> -p <password> -c <competition>
  • 这不是我要问的。我在询问 Kaggle 作为 python 库以在 python 脚本中使用。

标签: python kaggle


【解决方案1】:

我发布了一个blog post,解释了竞争、数据集和内核交互的大多数常见用例。

以下是在 Python 中使用 Kaggle API 所涉及的步骤。

设置 API 密钥

转到您的 Kaggle 帐户标签https://www.kaggle.com/<username>/account 并单击“创建 API 令牌”。将下载一个名为 kaggle.json 的文件。将此文件移动到 Mac 和 Linux 中的 ~/.kaggle/ 文件夹或 Windows 上的 C:\Users\.kaggle\ 中。

或者,您可以使用 kaggle.json 中的值填充 KAGGLE_USERNAME 和 KAGGLE_KEY 环境变量,以让 api 进行身份验证。

使用 API 服务器进行身份验证

 from kaggle.api.kaggle_api_extended import KaggleApi
 api = KaggleApi()
 api.authenticate()

下载数据集

# Download all files of a dataset
# Signature: dataset_download_files(dataset, path=None, force=False, quiet=True, unzip=False)
api.dataset_download_files('avenn98/world-of-warcraft-demographics')

# downoad single file
#Signature: dataset_download_file(dataset, file_name, path=None, force=False, quiet=True)
api.dataset_download_file('avenn98/world-of-warcraft-demographics','WoW Demographics.csv')

下载比赛文件

# Download all files for a competition
# Signature: competition_download_files(competition, path=None, force=False, quiet=True)
api.competition_download_files('titanic')

# Download single file for a competition
# Signature: competition_download_file(competition, file_name, path=None, force=False, quiet=False)
api.competition_download_file('titanic','gender_submission.csv')

提交比赛

# Signature: competition_submit(file_name, message, competition,quiet=False)
api.competition_submit('gender_submission.csv','API Submission','titanic')

检索排行榜

# Signature: competition_view_leaderboard(id, **kwargs)
leaderboard = api.competition_view_leaderboard('titanic')

【讨论】:

  • 非常感谢@Jose Cherian
  • 我遇到了问题
【解决方案2】:

你可以查看Kaggle API的实现

但是如果你很懒,你可以在你的服务器上安装kaggle pip install kaggle.

要下载整个比赛,您可以从 python 调用它。

import os
os.system('kaggle competitions download -c "dogs-vs-cats-redux-kernels-edition"')

进一步,检查docs

【讨论】:

  • 谢谢,我知道这一切。现在我正在使用调用os.system 的“惰性”解决方案,但这简直是荒谬的,因为kaggle 本身是用python 编写的。
  • 您的评论并没有说明我不知道或尚未尝试过的任何事情,所以我猜这次不要投票。
  • 确实,到目前为止我能找到的最好的资源是 api 的实际来源:github.com/Kaggle/kaggle-api/blob/master/kaggle/api/…
猜你喜欢
  • 2018-12-19
  • 2020-07-28
  • 2020-04-14
  • 2012-04-20
  • 2012-12-12
  • 2011-08-16
  • 2020-05-31
  • 1970-01-01
  • 2020-06-21
相关资源
最近更新 更多