2016-07-06 152 views
4

我有一个非常奇怪的问题,我得到不同的结果在不同的机器上相同的代码和相同的数据。相同的Python代码,相同的数据,不同的机器上的不同结果

我有一个基于numpy/scipy/sklearn的python代码,我使用anaconda作为我的基本Python分布。即使我将整个项目目录(包括所有数据和代码)从我的主机复制到另一台机器并运行它,我得到的结果也是不同的。具体来说,我正在做一个分类任务,我的精确度有3%的差异。我在两台机器上使用相同版本的python和anaconda。我的主机是Ubuntu 16.04,并且其结果比其他几个我试过的操作系统(OSX,Ubuntu 14.04和Centos)的机器要低。所以,我的当前系统配置应该有问题,因为所有其他机器都显示一致的结果。由于我的anaconda版本在所有机器中都是一致的,所以我不知道还有什么问题。任何想法我应该检查什么或可能是什么问题的根源?

我也从头开始删除并重新安装anaconda,但它没有帮助。

+0

你在使用火车/测试拆分吗?如果是这样,这可能是由于拉动不同的样本。 – zhespelt

+0

我正在使用随机种子。每次运行时我都没有得到不同的结果,我只在其中一台机器上得到不同的结果。所以,我想这一定是由于系统配置。但不知道要检查什么。 – CentAu

+0

没有看看代码(最好是一些有代表性的示例数据),很难说清楚。不管操作系统如何,相同的代码/数据/库***应该产生相同的结果。版本之间可能会有一些软件包版本差异,其中一些内容发生了变化? – zhespelt

回答

0

如果您的代码使用线性代数,请检查它。一般来说,舍入误差不是确定性的,如果你有严重的条件矩阵,它可以。

+0

你能详细说明严重条件下的矩阵吗? – CentAu

+0

你可以从https://en.m.wikipedia.org/wiki/Condition_number –

+0

开始我会补充说,当调试这些问题时,我会尝试做一个二进制搜索,比较中间结果以找到算法中的位置事情开始有所不同。祝你好运! –

相关问题