在sklearn.utils.shuffle中使用'random_state'参数?

时间:2016-07-04 18:29:03

标签: python scikit-learn shuffle

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

2 个答案:

答案 0 :(得分:5)

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,我将始终得到完全相同的改组。这对于单元测试特别有用,您可以在其中获得可重现的结果来断言您正在测试的条件。

希望有所帮助!

答案 1 :(得分:0)

除了@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)