Получение одинаковых случайных событий в кадре данных

kg__ спросил: 12 мая 2018 в 04:34 в: python

Я только начал работать с python. Я просто хотел проверить, что предположим, что передаю некоторый файл .root методу, который сначала преобразует его в dataframe, они перемешивают события в них и выдают выходные данные в формате .h5.

def loadDF(self, rndm = 12345):    df = rpd.read_root(self.file_name,self.tree_name)    rndseed = rndm
    np.random.seed(rndseed)
    index = list(df.index)
    np.random.shuffle(index)    self.df = df    hdf = pd.HDFStore(self.tree_name + '.h5')
    hdf.put('hdf', self.df)
    self.hdf = hdf
    hdf.close()

И теперь предположим, что я хочу получить тот же перетасованный файл данных из файла .root. Все, что я хочу, это то, что теперь .h5 не следует создавать. Правильно ли следующий метод?

def loadDF(self, rndm = 12345):    ddf = rpd.read_root(self.file_name,self.tree_name)    rndseed = rndm
    np.random.seed(rndseed)
    index = list(ddf.index)
    np.random.shuffle(index)    self.ddf = ddf

Короче говоря, "np.random.seed (same_number)" можно ли восстановить те же рандомизированные данные?

1 ответ

Есть решение
gboffi ответил: 13 мая 2018 в 09:27

Документы random.seed, в свою очередь, ссылаются на документацию класса random.RandomState, и здесь мы имеем окончательное слово по вашему вопросу

Гарантия совместимости Фиксированное семя и фиксированная серия вызовов методам RandomState с использованием тех же параметров всегда будут давать одинаковые результаты до округленной ошибки, кроме случаев, когда значения были неправильными. Неправильные значения будут исправлены, и версия NumPy, в которой было исправлено, будет указана в соответствующей документации. Расширение существующих диапазонов параметров и добавление новых параметров разрешено, поскольку предыдущее поведение остается неизменным.

Итак, пока не нужно исправлять ошибку в RandomState или один из его методов, вам гарантировано, что ваши результаты будут одинаковыми.

По-моему, со ссылкой на ваш вопрос

In short, by"np.random.seed (same_number)" мы могли бы восстановить те же рандомизированные данные?

это не ДА, но это, однако, да ...