Есть ли способ установить случайное состояние для всех функций панд? - PullRequest
0 голосов
/ 17 сентября 2018

Как указано, кажется очень дидактичным устанавливать random_state для каждой функции панд, связанной со случайностью. Любой способ установить его только один раз, чтобы убедиться, что случайное состояние установлено для всех функций?

1 Ответ

0 голосов
/ 17 сентября 2018

Функции Pandas получают свой случайный источник, вызывая pd.core.common._random_state, который принимает один аргумент state, по умолчанию None. Из его документов:

Parameters
----------
state : int, np.random.RandomState, None.
    If receives an int, passes to np.random.RandomState() as seed.
    If receives an np.random.RandomState object, just returns object.
    If receives `None`, returns np.random.
    If receives anything else, raises an informative ValueError.
    Default None.

Таким образом, если он получает None, который является значением по умолчанию для random_state вызывающего, он возвращает сам модуль np.random:

In [247]: pd.core.common._random_state(None)
Out[247]: <module 'numpy.random' from 'C:\\Python\\lib\\site-packages\\numpy\\random\\__init__.py'>

и it будут использовать глобальное состояние numpy. Итак:

In [262]: np.random.seed(3)

In [263]: pd.Series(range(10)).sample(3).tolist()
Out[263]: [5, 4, 1]

In [264]: pd.DataFrame({0: range(10)}).sample(3)[0].tolist()
Out[264]: [3, 8, 2]

In [265]: np.random.seed(3)

In [266]: pd.Series(range(10)).sample(3).tolist()
Out[266]: [5, 4, 1]

In [267]: pd.DataFrame({0: range(10)}).sample(3)[0].tolist()
Out[267]: [3, 8, 2]

Если какой-либо метод не уважает это, это ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...