我和我的三个同学参加了一个黑客马拉松,有 10 天的时间。我们获得了一个数据集,并且必须预测一个变量。但是,我想知道将 git 用于此类项目的最佳方法是什么。我们有两个主要目录model 和data。作为一个数据科学项目,需要大量的数据预处理。我们将 jupyter notebooks 用于数据清理和模型本身。我们如何在 git-repo-structure 方面有效地清理作为团队工作的数据?我不确定如何正确管理回购。每个人都应该有自己的分支吗?还是大家都在master分支上工作,推送更新的数据集和jupyter notebook是不是更方便?因为没有通常在主分支中的“运行系统”。我们正在对数据和模型进行大量试验。使用 git 甚至有意义吗?很抱歉这个混乱的问题
答案 0 :(得分:1)
根据我的经验,数据科学和软件开发从根本上是矛盾的。通常数据科学的需求会获胜,因为这些需求与业务需求直接相关,结果(如果你不小心的话)是混乱的、令人困惑的代码,没有人(包括你)可以遵循。
“数据科学”要求您提出很多问题,这意味着您要尽可能快地进行迭代。您编写的大部分代码不会给您想要的答案,因此您最终会得到一堆混乱的一次性脚本。有时很难知道您编写的脚本是否值得提交。
“软件开发”除了实际编写代码之外,还需要文档、规划、测试、重构以保持代码可读等。这需要您放慢速度,而“数据科学”不希望您这样做。显然,这是黑客马拉松,因此“规则”更加宽松,但它们的存在是为了更轻松地开发代码和团队合作,而您正在尝试这样做。
简短回答:是的,您应该使用 git。
在不了解您的项目的情况下,这里有一些更具体的提示:
data
(用于数据集)、model
(可能还有您正在尝试的每个模型的子目录)、{ {1}}(有关清理脚本,见下文),可能还有 cleaning
或 plots
,并尽可能将它们分开。如果一个模型因为您正在试验而有大量杂乱的脚本,那么至少可以包含这些噪音。这也让分工变得更加容易,一个目录 = 一项任务。output
和 pyenv
(或您的最喜欢的,因为有几种方法可以做到这一点)。根据我的经验,许多“数据科学”包在更改版本时可能会变化无常(尤其是当您开始进行 GPU 计算和其他有趣的事情时),因此让团队坚持使用一个版本的运行时和相关包可以省去很多麻烦。 答案 1 :(得分:0)