相关疑难解决方法(0)

跨平台numpy.random.seed()

文件说:

兼容性保证除非值不正确,否则使用相同参数的固定种子和对“ RandomState”方法的固定调用序列将始终产生相同的结果,直至舍入错误为止。不正确的值将被修复,并在相关文档字符串中记录进行此修复的NumPy版本。只要以前的行为保持不变,就可以扩展现有参数范围并添加新参数。

没有提及操作系统。

如果我np.random.seed(42)在Windows和Linux上调用,以后生成的随机数会一样吗?不同版本的64位Ubuntu会一样吗?

我假设rng使用系统库,因此代码可能不可移植。如果是这样,是否有解决方法?我知道这可能很丑陋,例如将linux rng系统更改为模仿Windows的内容。但是我已经准备好采用创造性的解决方案。

python linux windows random numpy

7
推荐指数
1
解决办法
908
查看次数

Python在覆盖失败时对异常进行预测试

我最近遇到了一个简单但令人讨厌的错误.我有一个清单,我想找到其中最小的成员.我使用了Python的内置min().一切都很好,直到在一些奇怪的情况下列表是空的(由于我无法预料的奇怪的用户输入).我的应用程序崩溃了一个ValueError(BTW - 未在官方文档中记录).

我有非常广泛的单元测试,我经常检查覆盖范围,以避免这样的意外.我也使用Pylint(一切都集成在PyDev中),我从不忽略警告,但我没有在用户之前发现这个bug.

我的方法中有什么可以改变以避免这种运行时错误吗?(在Java/C#编译时会被捕获?).

我正在寻找的东西不仅包括我的代码,还有一个很大的尝试 - 除外.我还可以做些什么?有多少其他构建的Python函数隐藏了这样令人讨厌的惊喜?

python unit-testing code-coverage exception-handling runtime-error

4
推荐指数
1
解决办法
497
查看次数

是否可以创建可重复的随机数流?

Per 如何生成可重复的随机数序列?可以设置随机模块的状态,以便您可以期望后续调用randint返回相同的数字.

我用这种方法看到的一个限制是状态设置在模块级别(本质上是一个全局变量),所以似乎不可能创建几个可重复的随机数流/迭代器(但是流的调用可以任意交错) )与当前的机制.是否有任何变通办法/替代库可以实现这一目标?

python

4
推荐指数
2
解决办法
808
查看次数

在python中生成与机器无关的随机数

假设 python 和 numpy 的版本在两台机器上相同,numpy.random 是否会在不同的架构上产生相同的随机数(给定一个特定的种子)?

是否有任何不错的选择可以在各种 python/库版本中独立于机器?

python random numpy

4
推荐指数
1
解决办法
1419
查看次数

当random_state为None时,StratifiedShuffleSplit函数(scikit-learn)的结果不同

我正在执行交叉验证以便正确分类.首先,我使用scikit-learn中的StratifiedKfold函数.在某些时候,我想进行更多迭代,然后我改为StratifiedShuffleSplit.通过这个新功能,我获得的结果发生了变化.最后,我意识到如果我指定一个random_state,我会再次获得与使用StratifiedKfold作为CV时获得的结果类似的结果.

总之,如果我指定random_state,对于不同的值,我会得到稍微不同的结果,类似于我使用StratifiedKfold获得的结果(通过一次迭代,或者计算我自己的混洗,如此处所示).但是,如果random_state为none或未指定,则我获得的结果完全改变.

我检查了当random_state为None时,列车和测试索引是不同的,并按预期分层.

我没有随机数生成器的经验,但这对我没有任何意义

查看代码,我意识到当random_state为None时,调用函数check_random_state.此函数,如果seed为none,则返回np.random(link)使用的RandomState单例.

我写了一些有问题的代码.如果我用下面的那个更改注释行,我会得到不同的结果.

import numpy as np
import sklearn as skl

(...)
#skCVs=skl.cross_validation.StratifiedShuffleSplit(classes,n_iter=iterations*kfoldCV,test_size = 1/float(kfoldCV),random_state=5)
skCVs=skl.cross_validation.StratifiedShuffleSplit(classes,n_iter=iterations*kfoldCV,test_size = 1/float(kfoldCV))

for train,test in skCVs:

   (classification, ...)
Run Code Online (Sandbox Code Playgroud)

我正在使用sklearn的0.14版本.

你有任何解释或线索可以帮助理解正在发生的事情吗?

python random machine-learning scikit-learn cross-validation

2
推荐指数
1
解决办法
2767
查看次数

Python - 生成相同的随机数

def main():
    x = [randint(1,100) for i in range(1,100)]
    return x
Run Code Online (Sandbox Code Playgroud)

这将返回100个随机数bt 1和100.每次调用该函数时,它都会返回不同的数字序列.我想要的是每次都得到相同的数字序列.也许将结果保存到某事?

python random python-2.7

0
推荐指数
2
解决办法
1万
查看次数