【问题标题】:Submitting results to Kaggle competition from command line regardless of kernel type or file name, in or out of Kaggle无论内核类型或文件名如何,在 Kaggle 内外都可以从命令行向 Kaggle 竞赛提交结果
【发布时间】:2020-07-09 19:53:30
【问题描述】:

在 Kaggle 中:无论内核类型或文件名如何,我如何将我的结果提交给 Kaggle 比赛?

如果我在 Kaggle 以外的笔记本(Colab、Jupyter、Paperspace 等)中?

【问题讨论】:

    标签: google-colaboratory kaggle


    【解决方案1】:

    简介(这部分可以跳过)

    我一直在寻找一种方法来做到这一点。特别是,能够在笔记本中的任何位置提交(以便您可以测试不同的方法)、具有任何名称的文件(以保持事物分开)和任意次数(尊重 Kaggle 限制)。

    我发现很多网站解释了这个过程,比如

    Making Submission
    1. Hit the "Publish" button at the top of your notebook screen.
    If you have written an output file, then you have an "Output" tab.
    2. Output > Submit to Competition
    

    但是他们没有明确内核必须是“脚本”类型而不是“笔记本”类型。

    这有一些我尚未完全探索的限制。

    我只是希望能够提交笔记本中的任何文件,就像其中的任何其他命令一样。


    过程

    嗯,这是我想出的过程。

    欢迎提出建议、错误、cmets、改进。具体来说,我想知道为什么这种方法并不比上述方法好。

    流程:

    1. 安装所需的库
    2. 提供你的 kaggle 凭据
      • 使用文件 kaggle.json 或
      • 使用您的 kaggle 凭据设置一些环境变量
    3. 使用简单的命令提交。

    问:我在哪里可以获得我的 kaggle 凭证?

    答:您可以从 https://www.kaggle.com > 'Account' > "Create new API token" 获取它们


    1。安装所需的库

    # Install required libraries
    !pip install --upgrade pip
    !pip install kaggle --upgrade
    

    2。提供您的 kaggle 凭据——使用您的 kaggle 凭据设置一些环境变量

    # Add your PRIVATE credentials
    # Do not use "!export KAGGLE_USERNAME= ..." OR "" around your credential
    %env KAGGLE_USERNAME=abc
    %env KAGGLE_KEY=12341341
    
    # Verify
    !export -p | grep KAGGLE_USERNAME
    !export -p | grep KAGGLE_KEY
    

    请参阅下面的注意


    2。提供你的 kaggle 凭证——使用文件 kaggle.json

    %mkdir --parents /root/.kaggle/
    %cp /kaggle/input/<your_private_dataset>/kaggle.json   /root/.kaggle/
    !chmod 600 /root/.kaggle/kaggle.json
    

    如何获取文件取决于您。

    一个简单的方法是这样的:

    1. 将 kaggle.json 下载到您的计算机上
    2. 在 kaggle 中,创建一个私有数据集(Your_Profile > Datasets > New Dataset)
    3. 将 kaggle.json 添加到该数据集
    4. 将私有数据集添加到您的笔记本(数据 > 添加数据 > 数据集 > 您的数据集)

    这可能看起来有点麻烦,但迟早您的 API 凭据可能会更改,并且在某一点(数据集)更新文件会在您的所有笔记本中更新它。


    3。用一个简单的命令提交。

    这里&lt;competition-name&gt;是比赛的代号。您可以从比赛的 url 或比赛页面中的“我的提交”部分获取。

    # Submit
    !kaggle competitions submit -c <competition-name> -f submission.csv -m "Notes"
    # example:
    !kaggle competitions submit -c bike-sharing-demand -f submission.csv -m "Notes"
    
    # View results
    !kaggle competitions submissions -c <competition-name>
    # example:
    !kaggle competitions submissions -c bike-sharing-demand 
    

    注意: 如果您太在意您的凭据的安全性和/或想要共享内核,那么您可以在“Console”上而不是在笔记本中使用您的凭据键入 2 个命令(示例如下) .它们仅在该会话期间有效/可用。

    import os
    os.environ['KAGGLE_USERNAME'] = "here DO use double quotes"
    os.environ['KAGGLE_KEY'] = "here DO use double quotes"
    

    您可以在内核底部找到控制台。


    PS:最初这是在here 发布的,但是当答案增加时,Kaggle 中的 Markdown 显示中断(而不是在其他地方),因此我不得不将其从 Kaggle 中取出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 2020-12-31
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      相关资源
      最近更新 更多