【发布时间】:2016-07-04 18:29:02
【问题描述】:
sklearn.utils 中shuffle 中的 random_state 参数是什么?任何人都可以用一些样本来解释 random_state 吗?
【问题讨论】:
标签: python scikit-learn shuffle
sklearn.utils 中shuffle 中的 random_state 参数是什么?任何人都可以用一些样本来解释 random_state 吗?
【问题讨论】:
标签: python scikit-learn shuffle
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,我将始终得到完全相同的洗牌。这对于单元测试特别有用,在单元测试中,您希望获得可重现的结果来断言您正在测试的条件。
希望有帮助!
【讨论】:
除了@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)