首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Scikit learn中的随机状态(伪随机数)

Scikit learn中的随机状态(伪随机数)
EN

Stack Overflow用户
提问于 2015-01-21 18:17:51
回答 5查看 215.9K关注 0票数 182

我想在scikit学习中实现一个机器学习算法,但我不明白这个参数random_state是做什么的?我为什么要使用它?

我也不明白什么是伪随机数。

EN

回答 5

Stack Overflow用户

发布于 2018-06-04 08:39:42

如果不在代码中指定random_state,那么每次运行(执行)代码时都会生成一个新的随机值,并且每次训练和测试数据集都会有不同的值。

然而,如果像random_state = 42这样分配一个固定值,那么无论您执行代码多少次,结果都将是相同的.i.e,训练和测试数据集中的值都是相同的。

票数 21
EN

Stack Overflow用户

发布于 2018-12-13 12:09:23

如果您没有在代码中提到random_state,那么每当您执行代码时,都会生成一个新的随机值,并且每次训练和测试数据集都会有不同的值。

但是,如果您每次都对random_state(random_state =1或任何其他值)使用特定的值,则结果将是相同的,即,训练和测试数据集中的值相同。请参考以下代码:

代码语言:javascript
复制
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次。

代码语言:javascript
复制
70

尝试删除random_state并运行代码。

代码语言:javascript
复制
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))

现在,每次执行代码时,这里的输出都会有所不同。

票数 5
EN

Stack Overflow用户

发布于 2019-01-29 22:01:59

random_state number以随机方式拆分测试和训练数据集。除了这里解释的内容之外,重要的是要记住,random_state值可以对模型的质量产生重大影响(所谓质量,本质上是指预测的准确性)。例如,如果您采用某个数据集并使用它训练回归模型,而没有指定random_state值,则每次都有可能在测试数据上为您训练的模型获得不同的准确性结果。因此,重要的是找到最佳的random_state值,为您提供最准确的模型。然后,该数字将用于在另一个场合重现您的模型,例如另一个研究实验。为此,可以通过将随机数分配给random_state参数,在for循环中拆分和训练模型:

代码语言:javascript
复制
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)`
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28064634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档