random_state=0和random_state=numpy随机随机状态(0)有何不同



我正在测试random_state的一些可能性。你能解释一下random_state = 0random_state = numpy.random.RandomState(0)的区别吗?

代码

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
import numpy as np
import random
for i in range(5):

###########  code for random_state= numpy.random.RandomState(i) ##############

rng = np.random.RandomState(i)
X, y = make_classification(random_state=rng)
rf = RandomForestClassifier(random_state=rng)
X_train, X_test, y_train, y_test = train_test_split(X, y,
random_state=rng)
p1=rf.fit(X_train, y_train).score(X_test, y_test)

###########  code for random_state= integer ##############
X, y = make_classification(random_state=i)
rf = RandomForestClassifier(random_state=i)
X_train, X_test, y_train, y_test = train_test_split(X, y,
random_state=i)
p2=rf.fit(X_train, y_train).score(X_test, y_test)
print(i,p1,p2)

输出

0  0.84   0.92
1  1.0    0.92
2  0.88   0.92
3  0.84   0.88
4  1.0    1.0

设置random_state = 1为列车/测试集的拆分设置固定种子(例如1(。

设置random_state = np.random.RandomState(1)将种子设置为具有种子1的随机变量。在每次迭代中,np.random.RandomState实例每次都会随机变化,以不可重复的方式拆分集合。

如果想要可重复的拆分,请使用一个普通整数作为random_state,或者不使用任何内容进行随机拆分。

只有当您想根据特定的分布(使用固定种子(随机拆分集合时,使用RandomState才有意义。查看有关它的官方numpy文档

最新更新