2016-08-29 3 views
0

Предположим, у меня есть программа, называемая script.py:random_state поддерживается при запуске скрипта еще раз?

import pandas as pd 
import numpy as np 
from sklearn.cross_validation import train_test_split 

if __name__ == "__main__": 
    df = pd.DataFrame({"x": [1,2,3,4,5,6,6,5,6,3], "y": [1,1,0,0,0,0,1,0,0,1]}) 

    train, test = train_test_split(df, test_size = 0.20, random_state = 100) 

Если я запускаю этот скрипт из моей командной строки сразу:

H:\>python script.py 

Как я могу гарантировать, что train и test dataframes в последующих запусках (т.е. когда я снова запускаю script.py) идентичны кадрам данных train и test из предыдущих итераций? Я знаю, что random_state работает, если вы не покидаете консоль, но сохранилось бы равенство этих train и test наборов, если я вернусь завтра, снова включил свой компьютер и перезапустил script.py?

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

+0

Для DataFrame той же формы он будет возвращать те же самые расколы, да. Вы можете попробовать его с помощью своего примера. У меня есть индексы 7 и 6 в тестовом наборе данных. Вы должны иметь то же самое. – ayhan

ответ

1

Случайное состояние, как не иметь никакого отношения при запуске вашего кода. Вся концепция определения случайного состояния состоит в том, чтобы иметь одинаковые результаты при каждом запуске этого кода с теми же параметрами . Поэтому до тех пор, пока вы не измените df, test_size и random_state, эта функция всегда будет возвращать те же значения, независимо от того, сколько дней прошло. Однако это может измениться, если вы обновите базовую библиотеку.

+0

Итак, сохраняя все постоянным, за исключением того времени, когда я запускаю свой скрипт, я получу те же самые разрывы, когда вы используете одно и то же значение для 'random_state'? Как Python знает в совершенно другом сценарии, используя тот же файл данных, что если я укажу 'random_state = 100', он должен разделить df тождественно, как в другом скрипте? – blacksite

+0

Это связано с тем, что внутреннее расщепление df использует генератор случайных чисел, который, учитывая случайное состояние, является ** детерминированной функцией **. Таким образом, при установке семени нет случайности, это просто регулярная функция, включающая некоторые манипуляции с битами, но полностью детерминированным образом. Это также является причиной того, что у нас действительно нет случайных чисел в CS, у нас есть только ** псевдо ** случайные числа. – lejlot

Смежные вопросы