我正在测试random_state
的一些可能性。你能解释一下random_state = 0
和random_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文档