喜欢用Kaggle练手机器学习的同学,必定是喜欢它众多的数据集,还有社区论坛,以及一大票别人家的代码!
但很多人知道,但不一定用过的一个功能,那就是Kaggle API[1]。Kaggle API是什么呢?在每个竞赛的Data说明页面下,如Convey2020竞赛[2]下:
1.1 设置Kaggle API配置文件
新建一个json文件于目录 ~/.kaggle/kaggle.json 下,编辑它:
{
其中,username字段是kaggle账户的用户名,不知道自己username的可以登录后点自己头像,点"Your Profile":
此时浏览器地址栏的link就会是 https://www.kaggle.com/xxxx,这个xxxx就是你的username。
key字段,则是用户的专属API Key,注意保护好,对于使用API的用途,它就像个人密码。那么如何创建API Key呢?点击上图齿轮logo的Account,进入用户设置页面,翻到API,点击Create New API Token。
诶,发现Kaggle直接把kaggle.json发给我们了,但是其中只包含了username字段和key字段。
1.2 给自己的代码适配数据路径
path字段即Kaggle下载数据集的目录。如果不设置path字段,Kaggle默认的下载目录是用户主目录即$HOME,强迫症不能忍啊。故可以将path字段设置为自己想要Kaggle集中下载数据到的位置,如:
{
这样,数据就会下载到用户主目录下的 .kaggle 目录中。
2 测试下载数据集
很多数据集,在它们的Data页面下,都有Kaggle API的代码,直接复制粘贴就好了,这一点非常方便。我们在Convey2020竞赛[2]的数据集上做Kaggle API的测试:
kaggle competitions download -c conways-reverse-game-of-life-2020
诶,发现只要一行命令(复制粘贴即可,都不用手打),就可以把数据集下到我们想要的路径了。
3 Kaggle API的用处
首先,Kaggle API是个命令行下载工具,不一定能保证断点续传,所以网络环境不好,或者数据集很大(动辄几个G),就不太稳了。但是上面的Convey数据集,也就12MB,然后我们的网速平均有3.5MB/s,几s就能下好了。
如果熟悉Linux命令和bash编程,把数据集的下载和解包(tar -xvf啥的)写成一键脚本,是能大大方便在新的数据集上做学习和研究的。
固定数据目录的好处,这个不用多说,如果数据集的位置是相对确定的,那自己的代码也就不用在目录的问题上改来改去啦,参见我之前的文章:
花子归:[机器学习]俺们Python程序员太厉害了,机器学习训练脚本参数化zhuanlan.zhihu.com参考
- ^Kaggle API https://github.com/Kaggle/kaggle-api
- ^abConway's Reverse Game of Life 2020 https://www.kaggle.com/c/conways-reverse-game-of-life-2020/data