我想在scikit学习中实现一个机器学习算法,但我不明白这个参数random_state
是做什么的?我为什么要使用它?
我也不明白什么是伪随机数。
发布于 2018-06-04 08:39:42
如果不在代码中指定random_state
,那么每次运行(执行)代码时都会生成一个新的随机值,并且每次训练和测试数据集都会有不同的值。
然而,如果像random_state = 42
这样分配一个固定值,那么无论您执行代码多少次,结果都将是相同的.i.e,训练和测试数据集中的值都是相同的。
发布于 2018-12-13 12:09:23
如果您没有在代码中提到random_state,那么每当您执行代码时,都会生成一个新的随机值,并且每次训练和测试数据集都会有不同的值。
但是,如果您每次都对random_state(random_state =1或任何其他值)使用特定的值,则结果将是相同的,即,训练和测试数据集中的值相同。请参考以下代码:
import pandas as pd
from sklearn.model_selection import train_test_split
test_series = pd.Series(range(100))
size30split = train_test_split(test_series,random_state = 1,test_size = .3)
size25split = train_test_split(test_series,random_state = 1,test_size = .25)
common = [element for element in size25split[0] if element in size30split[0]]
print(len(common))
不管你运行代码多少次,输出都是70次。
70
尝试删除random_state并运行代码。
import pandas as pd
from sklearn.model_selection import train_test_split
test_series = pd.Series(range(100))
size30split = train_test_split(test_series,test_size = .3)
size25split = train_test_split(test_series,test_size = .25)
common = [element for element in size25split[0] if element in size30split[0]]
print(len(common))
现在,每次执行代码时,这里的输出都会有所不同。
发布于 2019-01-29 22:01:59
random_state number以随机方式拆分测试和训练数据集。除了这里解释的内容之外,重要的是要记住,random_state值可以对模型的质量产生重大影响(所谓质量,本质上是指预测的准确性)。例如,如果您采用某个数据集并使用它训练回归模型,而没有指定random_state值,则每次都有可能在测试数据上为您训练的模型获得不同的准确性结果。因此,重要的是找到最佳的random_state值,为您提供最准确的模型。然后,该数字将用于在另一个场合重现您的模型,例如另一个研究实验。为此,可以通过将随机数分配给random_state参数,在for循环中拆分和训练模型:
for j in range(1000):
X_train, X_test, y_train, y_test = train_test_split(X, y , random_state =j, test_size=0.35)
lr = LarsCV().fit(X_train, y_train)
tr_score.append(lr.score(X_train, y_train))
ts_score.append(lr.score(X_test, y_test))
J = ts_score.index(np.max(ts_score))
X_train, X_test, y_train, y_test = train_test_split(X, y , random_state =J, test_size=0.35)
M = LarsCV().fit(X_train, y_train)
y_pred = M.predict(X_test)`
https://stackoverflow.com/questions/28064634
复制相似问题