Разделение теста PySpark randomSplit vs SkLearn Train — случайный начальный вопрос

#apache-spark #scikit-learn #pyspark #train-test-split

#apache-spark #scikit-learn #pyspark #разделение обучающего теста

Вопрос:

Допустим, у меня есть pandas фрейм данных, и я применяю его sklearn.model_selection.train_test_split с random_seed параметром, равным 1.

Допустим, затем я беру точно такой же pandas фрейм данных и создаю фрейм данных Spark с экземпляром SQLContext . Если я применю randomSplit функцию PySpark с seed параметром, равным 1, всегда ли я гарантированно получу такое же точное разделение?

Ответ №1:

В общем, нет.

Большинство генераторов «случайных» чисел на самом деле являются функциями, которые принимают некоторое входное значение и генерируют действительно длинный поток байтов, который может быть преобразован в значения других типов. «Случайность» возникает из-за того факта, что, учитывая только значения из этого потока, даже столько, сколько вы хотите, очень сложно предсказать следующее значение или извлечь исходное входное значение.

Это входное значение является тем, что мы называем «начальным значением».

Будут ли результаты одинаковыми, будет зависеть не только от начального значения, но также от того, будут ли sklearn и pyspark ли точно такие же реализации генератора случайных чисел, ОС, на которой они выполняются, архитектуры процессора…

Комментарии:

1. Ах, это имеет смысл. Большое спасибо за ответ. Я не понимаю, кто проголосовал против меня, потому что я чувствую, что это то, что стоит проверить на воспроизводимость модели.