【问题标题】:Use of 'random_state' parameter in sklearn.utils.shuffle?在 sklearn.utils.shuffle 中使用“random_state”参数?
【发布时间】:2016-07-04 18:29:02
【问题描述】:

sklearn.utilsshuffle 中的 random_state 参数是什么?任何人都可以用一些样本来解释 random_state 吗?

【问题讨论】:

    标签: python scikit-learn shuffle


    【解决方案1】:

    shuffle 用于随机打乱您的矩阵。以编程方式,随机序列是使用种子数生成的。如果您使用相同的种子,则保证您具有相同的随机序列。 random_state 参数允许您将此随机种子提供给 sklearn 方法。这很有用,因为它允许您为开发和测试目的重现随机性。所以,在shuffle 方法中,如果我对相同的数据集使用相同的random_state,那么我总是可以保证有相同的随机播放。考虑以下示例:

    X = np.array([[1., 0.], [2., 1.], [0., 0.]])
    X = shuffle(X, random_state=20)
    

    如果这给了我以下输出,

    array([[ 0.,  0.],
          [ 2.,  1.],
          [ 1.,  0.]])
    

    现在,我始终保证,如果我使用 random_state = 20,我将始终得到完全相同的洗牌。这对于单元测试特别有用,在单元测试中,您希望获得可重现的结果来断言您正在测试的条件。

    希望有帮助!

    【讨论】:

      【解决方案2】:

      除了@Abhinav 给出的情况外,random_state 在这种情况下也很有用: 假设您有 2 个 nparrays/dataframes...,并且您需要以相同的方式对它们的行进行洗牌(例如,两个数组中的第一行将是第 20 行,第 2 行将是第 5 行...)

      您可以通过在两个语句中保持相同的 random_state 来做到这一点:

      array1_shuffled = sklearn.utils.shuffle(array1, random_state=42)
      array2_shuffled = sklearn.utils.shuffle(array2, random_state=42)
      

      【讨论】:

      • 你实际上不需要使用随机状态来以同样的方式打乱两个列表,你可以简单地这样做:array1_shuffled, array2_shuffled = sklearn.utils.shuffle(array1, array2)
      猜你喜欢
      • 2019-03-25
      • 2016-06-26
      • 2017-12-18
      • 2017-09-05
      • 2017-06-29
      • 2020-03-31
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多