本文由斯坦福大学研究计算和斯坦福医学院的研究软件工程师VanessaSochat撰写。
我们都知道,数据共享是一件很难的事,但在发现与奖励方面具有很大的潜力。一个典型的“共享操作”可能看起来像是在移动硬盘上传递信息,将压缩档案放在某个大学或云服务器上,或批量存储在一个安全的大学集群中。这是最佳方法吗?这是容易的事吗?要回答这些问题,首先考虑一下数据采集的可能经历的旅程。它看起来像下面这样:
因为数据的生成更像是一个流,这一过程流经常是周期性的,数据从步骤1到步骤6的过程中停止的唯一原因就是我们决定停止收集。在最理想的情况下,我们希望将这些步骤完全自动化。第1步我们可能是在MRI扫描仪上生成图像,第2步可能是用自动化脚本将初始文件格式转化为研究人员所需的格式,第3步移动到专用集群存储,第4步用于研究组进行使用,第5步和第6步(如果两步全部发生)是额外的工作,进行再次处理并将数据传输到共享位置。
▌动态数据
一个自动生成和共享数据集的简单管道又是怎么样的可能像下面这样:
第4步到第6步仍然会发生(研究人员正在做分析),但不是有一组人渴望得到这些数据,而是为了有成千上万的人可以使用它们。不同的是我们在步骤3中添加了一个助手,即持续集成,用以简化处理和共享数据的过程。我们通常认为持续集成(CI)用于测试或部署,但它也可能是数据共享的有用工具。因此我们把这个概念叫做"连续数据"。一旦数据被处理并传输到研究组的存储中,它也可能具有这个连续的数据步骤,将其打包以便共享。
▌KaggleAPI
虽然一个更大的、机构层面的努力是理想的,但与此同时,我们也可以利用开源,免费使用Kaggle这样的资源。我认为Kaggle有可能做Github在早期科学重现性方面所做的事情。如果共享数据集既简单又有趣,有潜在的回报,Kaggle将会对规模化的发现和协作产生影响。但我们需要一个开始!我决定从显示我可以使用的KaggleAPI来上传数据集开始。它在Web界面中很容易实现,利用命令行也很容易实现。简单来说,我们需要的只是一个包含数据文件和元数据(json文件)的目录,我们可以将API客户端指向该目录。例如,这是我上传的一个数据集:
datapackage.json描述正在上传的内容
▌Tools
在这里我创建了一个Docker容器,提供了一个之前与KaggleAPI交互并生成一些数据集的简短的示例。我在这里介绍一下脚本的基本逻辑。Kaggle命令行客户端在很多任务上都做得很好,但是作为一名开发人员,我希望更多地控制元数据规范和文件的创建。我还希望对它进行Dockerized,这样我就可以执行一个与主机隔离的创建操作。
▌创建容器
此映像提供在DockerHub上,你也可以自己构建:
我没有将创建脚本公开为入口点,因为我希望这是一个“shell到容器中,并了解发生了什么”的交互,你可以这样做:
▌创建数据集
create_dataset.py脚本位于工作目录中,此方法接收您希望生成数据集的参数。你可以不带参数运行该脚本来查看细节:
然后我想把它们上传到一个叫做vanessa/code-images.命令行如下:
上述涉及的参数说明如下:
关键字:以逗号分隔的关键字列表(无空格!)
文件:要上传的数据文件的完整路径
标题:数据集标题(有空格需要加上引号)
命名:数据集本身的名称(不能包含空格或特殊字符以及引号)
用户名:你的kaggle用户名,或数据集所属组织的名称
接下来将会生成一个包含数据包的临时目录:
然后将文件添加到其中,例如,这是我的临时文件夹的结果:
机构需要优先考虑数据,并帮助研究人员管理自己的数据。研究者应该能够得到支持来管理他们的数据,然后让它以编程的方式访问。这必须超越传统库提供的“归档”,深入研究api、通知、部署或分析触发器。虽然我们没有这些生产系统,但一切都是从简单的解决方案开始的,以便轻松创建和共享数据集。我的设想是,在进行计算的地方(我们的研究计算集群)和数据存储的地方(以及通过上载或API自动共享的地方)之间建立牢固的关系。类似这样:
通知的范围可以从任何地方发出:
(1)进入一个提要以告诉另一研究人员新数据;
(2)触发CI作业从存储重新上载到共享位置;
(3)触发某个容器的新版本的构建和部署,该容器将数据作为依赖项
▌WhatWeNeed:数据工程师&协作平台
一个机构需要分配资源和人员来帮助研究人员提供数据。我相信,在未来,研究人员可以通过协作平台,通过其他研究人员提供的数据源,共同合作进行研究。
更多内容可访问原文链接
通过上面的介绍,大家肯定已经感受到收集数据集这项工作的艰难和重要意义。而作为学习者,Kaggle,一个神一般的资源,面对成千上万并每天都会更新添加的数据,我们又该如何找到数据集呢?接下来大为家介绍一些技巧和窍门,希望可以帮助大家更好的学习并利用Kaggle,找到对自己有用处,感兴趣的数据集。
原文链接:
▌从数据集页面搜索
点击Kaggle页面顶部显示的“数据集”标签,即可进入数据集页面
▌数据集搜索
当您在数据集页面中使用搜索栏时,与使用页面顶部的搜索栏不同,您将获得包含所有搜索结果的新页面
▌搜索提示
Kaggle的搜索支持一些额外的搜索语法。这意味着您可以使用以下修改来更准确地进行搜索。
“”:将搜索文本放在双引号(“”)中将搜索引号中的确切短语。“巧克力蛋糕”将返回关于巧克力蛋糕的结果,但不包括巧克力棒或红色天鹅绒蛋糕。
+:在两个单词之间加上一个(+),中间没有空格,将返回具有第一个词和第二个词的搜索结果。“巧克力+蛋糕”将返回巧克力和蛋糕的结果,但它们不必一起同时出现。
|:在两个单词之间放置一个(|)将返回结果中包含第一项或第二项。“蛋糕|巧克力”将返回关于蛋糕或巧克力的结果。
*:如果您要查找多种拼写的内容,可以使用星号(*)表示“此处有任何字符”。“choc*”将返回以“choc”开头的结果,如“choclate”,“chocked”或“chockablock”。
-:将减号(-)放在单词前面会返回不包含该单词的结果。“蛋糕-巧克力”将返回不包含“巧克力”一词的蛋糕的结果。
▌在搜索结果中找到特定内容
如果您的搜索有很多结果,在搜索结果页面中使用浏览器的“在页面查找”功能返回有时会有所帮助。
▌排序结果
还可以用不同的方式对搜索结果进行排序:
投票数最多:根据他们收到的最高票数排序。
▌特色VS.所有数据集
▌数据集标签
另一种查找数据集的方法是使用标签(一个相对较新的功能)。您可以通过两种方式搜索特定标签。首先是通过点击数据集列表中的标签或数据集页面上的标签。这将返回具有匹配标签的数据集列表。第二个是在搜索框中搜索标签。您可以通过添加“tag”来完成此操作,然后在单引号中添加标签的名称。如果标签中有空格,请包含它们。
数量众多的标签涵盖了数据发布者用于使数据更容易被发现的各种主题。目前,用户无法添加自己的单独标签。建议点击标签以了解更多有关标签的信息,而不是使用文本搜索并试图猜测某个标签是否存在。
▌页面顶部搜索栏进行搜索
当知道某些数据集已经存在,可以在Kaggle网页顶部的搜索栏进行搜索,这是一个方便的捷径,但对于深入搜索,个人偏好还是喜欢在数据集页面内进行搜索
在右侧,可以看到当搜索“巧克力“时,在数据集的最佳结果都是数据集。
在左边,可以看到,当搜索“巧克力”时,显示结果依次是:数据集,内核和用户。
以上是关于Kaggle数据集的搜索Tips,如果此时您需要使用特定类型的数据,可以上传您的数据,也为这项艰难伟大的工程贡献一份力量。