numpy.random.seed和Sklearn中RandomState的解析

專欄又鴿了好幾天沒寫了,今天原本在寫專欄的文章,打算聊一聊Numpy中的一些基本的操作。結果發現了一個自己之前沒有發現的炸彈,所以我們今天好好聊一聊random seed

Wikipedia中對於random seed是這麼解釋的

A random seed (or seed state, or just seed) is a number (or vector) used to initialize a pseudorandom number generator.

這裡又有一個我們不知道的概念了,pseudorandom number generator,我們再看一下解釋:

A pseudorandom number generator (PRNG), also known as a deterministic random bit generator (DRBG), is an algorithm for generating a sequence of numbers whose properties approximate the properties of sequences of random numbers. The PRNG-generated sequence is not truly random, because it is completely determined by an initial value, called the PRNGs seed (which may include truly random values).

看了Wikipedia的解釋我們知道random seed(隨機數種子)是一個用來初始化pseudorandom number generator(偽隨機數生成器)的數或者是向量。在numpy.random.seed(seed=None)中要求傳入的這個seed必須是32位無符號整數或者是一維向量,默認為None。

接下來我們來看一看pseudorandom number generator(偽隨機數生成器,以下簡稱為:PRNG)。從上面的解釋我們知道PRNG是一種用來生成數列的演算法,這裡說的數列和隨機數序列屬性相似。但是由PRNG生成的數列並非是真正的隨機數列,而是偽隨機數,這裡的數列並非是隨機生成的,而是完全由某個數初始化來的,這個數被稱作PRNG種子,可能是一個隨機數。

通過以上的敘述我們可以總結,所謂的RandomState(隨機狀態)是由某個可能的隨機數Random seed(隨機種子)決定的,當RandomState決定了之後就可以在接下來的程序里生成某些被認為是隨機數的偽隨機數!這種說法可能比較拗口,但是仔細想一想一定是可以想明白的!這裡的文章僅僅代表自己的想法和認識,有什麼不對的地方歡迎大家批評指正!歡迎大家關注我的專欄:數據科學慢慢學!你們的評論點贊打賞都是對我最大的鼓勵!也歡迎你們和我一起交流問題,共同進步!

推薦閱讀:

sklearn預測新文本(unseen new data),而不是train_test_split分割出來的測試集:解決方案
Scikit-Learn 中文文檔第一期校驗完成,邀請你來參與維護,一起走的更遠 | ApacheCN
簡單線性回歸練習sklearn.linear_model.LinearRegression
如何使用sklearn進行數據挖掘
網格搜索演算法與K折交叉驗證

TAG:numpy | sklearn | 數據科學 |