问题标签 [reproducible-research]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
74 浏览

docker - 如何重现“改进的 GAN”代码?theano/cudnn/docker 的问题

关于 OpenAI 的“改进的 GANs”,我一直在尝试重现此处找到的代码,但我在设置环境(Docker 容器)时遇到了很多麻烦。
我只是无法使 Theano 与此代码一起正常工作。

我创建了一个 Docker 容器来测试它,但是当我使用使用 conda 安装的 Theano 的稳定版本时会引发分段错误...
有些帖子建议改用 Theano 的开发版本,但是当我更新它时,Theano 可以'再也找不到Cudnn了

如果有人对 Theano/lasagne/docker 有一些背景可以帮助我,我将不胜感激。如果需要,我可以粘贴我的Dockerfile, 或任何可以帮助的东西。

0 投票
1 回答
2301 浏览

python - RandomizedSearchCV 和 GridsearchCV 结果不可重现

我在 python 中执行 RandomForest 和 AdaBoost 回归

我的结果不可重现 [我的预测每次都使用相同的数据和代码运行]

这里 test_adr 和 test_rfr 值每次都会发生变化,我运行我的代码。

请使用任何样本数据进行回归。但请建议如何使我的结果可重现。

0 投票
1 回答
31 浏览

metrics - 是否有关于“SLOC 与处理的工作量”比率的可靠发现?

我开始思考诸如“80% 的工作由 20% 的代码完成”之类的句子,并想知道是否有任何基础研究、原则或研究可以支持这种说法。

遗憾的是,我的 Google-Fu 不足以给出令人满意的答案。弹出的只是帕累托原理,但我不确定它是否可以应用于这种情况。

  1. 关于处理的工作量与 SLOC 的比率是否存在普遍共识?

  2. 是否有人对此主题进行过研究,或者是否有统计数据可以支持任何主张?

  3. 是否有关于哪种代码属于哪种类别的一般性陈述?(我最初的猜测是80% 的代码 / 20% 的负载部分主要与错误处理有关。)

0 投票
2 回答
666 浏览

r - 解析 R 函数名称、参数和返回值

如何以编程方式解析函数、参数及其返回值的名称?

我有兴趣使用drake 生成工作计划数据框以自动化 R 数据分析工作流。workplan可以使用该功能生成此类工作计划数据框。

我有一个 R 脚本,其中包含我想使用的功能。例如:

我想以编程方式生成一个如下所示的数据框。如何解析函数名称、参数和返回值,并使用drake::workplan或其他函数创建这样的 data.frame?

一个人会像这样手动做到这一点:

然后使用以下命令运行工作流:

谢谢你。

0 投票
2 回答
7376 浏览

python - Python sklearn RandomForestClassifier 不可重现的结果

我一直在使用 sklearn 的随机森林,并尝试比较几个模型。然后我注意到即使使用相同的种子,随机森林也会给出不同的结果。我尝试了两种方式:random.seed(1234) 以及使用随机森林内置 random_state = 1234 在这两种情况下,我得到不可重复的结果。我错过了什么……?

有任何想法吗?谢谢!!

编辑:添加我的代码的更完整版本

编辑:已经有一段时间了,但我认为使用RandomState可能会解决问题。我自己还没有测试它,但如果你正在阅读它,它值得一试。此外,通常最好使用 RandomState 而不是 random.seed()。

0 投票
1 回答
283 浏览

python - 随机森林回归器 - Python 不可重现

我正在尝试检查受 n_estimators 影响的随机森林回归器性能。

这是不可重现的,我一开始也定义了 rng 。

注意:想象一个用于 1 的 For 循环:nrow(dataframe) 每个 1 它通过多个模型,并且我在 For 循环的开头定义了 rng 和 Seed 。

帮帮我!.

2 个样本输出,这应该是理想的。这里的键是指n_estimators

[在此处输入图像描述][模拟 1] [在此处输入图像描述][模拟 2]

0 投票
1 回答
884 浏览

python - 为 matplotlib 绘图后端设置随机种子

我正在使用生成和保存 SVG 图像,matplotlib并希望使它们尽可能重现。但是,即使在设置np.random.seed和之后, SVG 图像中random.seed的各种id和值仍然会在我的代码运行之间发生变化。xlink:href

我认为这些差异是由于用于matplotlib渲染 SVG 图像的后端造成的。有没有办法为此后端设置种子,以便相同的图在两次不同的代码运行之间产生相同的输出?

示例代码(运行两次,plt.savefig为第二次运行更改名称):

比较文件:

0 投票
1 回答
715 浏览

python - 应该如何安装和启用 Jupyter 扩展以实现可重复性?

我想使用RISE aka live_reveal 制作交互式幻灯片集(用于在 python 中进行一些实时编码的演示),这是 Jupyter 的笔记本扩展。

我希望幻灯片集可供其他人(以及我未来的自己)使用,而无需太多手动步骤(并且不依赖托管的 Jupyter 解决方案),因此我选择pipenv管理依赖项。

我可以开始

但是,只会pipenv install RISE在本地目录中留下痕迹(在Pipfile和中Pipfile.lock)。因此,在新机器上(或之后pipenv --rm)使用我的文件时

是不够的。必须重复这两个nbextension步骤以启用 RISE 扩展并在 Jupyter 笔记本中使用按钮切换到演示模式。

这可以自动化吗?使用额外的工具,如 conda、docker、vagrant、make 或其他构建系统,...)如果是这样,它应该如何自动化?

我可以告诉pipenv(例如 in Pipfile)在安装包后运行这两个命令吗?或者我应该让笔记本(*.ipynb文件)以某种方式加载扩展名?

0 投票
1 回答
726 浏览

r - 在正在读取本地文件的 r 中使用 reprex 包创建可重现的示例

我经常使用reprex::reprex创建可重现的R代码示例来获得其他人的帮助以消除我的代码中的错误。通常,我使用irisor之类的数据集创建最小的示例mtcars,并且效果很好。但是我总是无法在reprex需要使用自己的数据的任何时候使用,因为问题非常具体,我不能依赖datasets库中的数据集。

在这种情况下,我收到以下错误:

reprex 包(v0.2.0)于 2018 年 2 月 19 日创建。

在其他地方有一个很好的讨论reprex如何制作一个很棒的 R 可重现示例?)。作者建议使用类似dput-

如果您有一些使用这些技巧难以构建的数据,那么您始终可以使用例如 或索引来制作原始数据的子head()subset()。然后使用例如。dput()给我们一些可以R立即放入的东西

但也提到——

如果您的数据框有一个具有多个级别的因子,则dput输出可能会很笨拙,因为它仍会列出所有可能的因子级别,即使它们不存在于您的数据子集中。

因此,如果我想使用我的完整数据集,这不是一个好的选择。

总之:

任何人都知道如何创建一个reprex独立的,即使它依赖于使用包含所有数据的本地文件?

0 投票
0 回答
46 浏览

r - 用于可重复研究的 R 数据结构设置

背景

我会收到关于建筑物、大量建筑物和大量设备的设备的每小时间隔报告。设备上的每个参数都称为一个点,它们已经有一个名称,我无法选择点的名称。每个点名称都是唯一的。我正在尝试做的是对每座建筑物运行标准报告。最终,我想把它移到 Shiny 并查看我的图表,也许从那里打印一份报告,但是......小步骤。

问题

我在正确的轨道上吗?有没有更有效的方法来做到这一点?当我开始编写 Markdown 报告或将其转移到 Shiny 时,我会遇到问题吗?

示例代码

解释

所以在这个示例中,tbl.data数据框将是我从每个建筑物接收到的数据。我必须手动创建tbl.equipmenttbl.point数据框,我只需将它们存放在我的机器或数据库上的 *.csv 文件中(并且能够在 Shiny 中添加/编辑)。点名称没有标准,也不能保证每件设备都有每个点。使用select()诸如contains()or之类的助手starts_with()是不可能的。

所以我刚刚创建了一个设备表,其中包含有关设备的参数(在本例中为倍数)。此外,还有一个点表,它告诉您哪个设备以及每个点属于哪个类别。

对于这个简单的示例,我包含了两个示例函数。一个根据数据计算一个值,另一个测试故障。我过去最大的问题是当一个设备没有点时,它会停止执行,所以我必须手动将其取出或其他东西。我想解决方法是exists()在运行那段代码之前使用或类似的东西并进行测试。

同样,对于这个简单的例子,我只是打印了一个图,但输出可能是 Markdown 文档(我想我以前做过,但不是这样)或 Shiny(我创建了一些更简单的应用程序)。

结论

最大的问题是“这是“正确”的做法吗?我确信这很常见,并且必须有一种我没有使用的非常有效的方法。当我开始编写代码以打印报告或将其放入 Shiny 应用程序时,什么会为我的成功做好准备?