我有两个问题,我正在尝试用 bh_sne
绘制我的数据库,但是由于该算法的本质是基于每次运行中的随机数,因此我得到了不同的结果。我希望每次运行都能得到相同的结果。看来random_state
很有帮助。
但我不知道为 random_state
选择不同的整数到底意味着什么。
例如,random_state=0
和 random_state=1
或 random_state=42
.. 和 random_state= 之间有什么不同无
其次,当我在函数中应用此参数并给出除 None 之外的任何值时,出现以下错误。
AttributeError: 'int' object has no attribute 'randint'
我的 pycharm 中没有任何名为 random 的文件。
这是我的代码:
data = bh_sne(X, random_state =1 )
X
包含我的特征值。
最佳答案
该库使用 numpy 的随机模块,更具体地说:this part .
就这样使用它:
import numpy as np
bh_sne(X, random_state=np.random.RandomState(0)) # init with integer 0
这可以通过简单的随机源搜索来看到(见下图),其中还显示了一些单元测试!
整数(上面的 0)只是某种熵源,它会导致内部随机数生成器的某种状态。如果不分析 PRNG,就无法保证种子数 0 与 1 或 40 相比如何表现。它不需要不同(但通常是不同)!
只有一个保证:决定论!从用数字 seed=my_integer
初始化的 PRNG 中获取随机数,每次使用该精确种子完成此操作时都会返回相同的路径/相同的数字(前 x 个数字每次都相等;x 是任意的) 。
但是intro-page可能会给出一个更重要的通知(当我看到你在 python 中工作时使用的库时,这是我的第一个问题):
注意:Scikit-learn v0.17 包含 TSNE 算法,您可能应该使用它们而不是这个。
关于python - 在 TSNE 中选择 random_State 参数(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47840056/