Невозможно воспроизвести разделение поезда и проверить с помощью sklearn - PullRequest
0 голосов
/ 03 июня 2019

В настоящее время я использую Jupyter Notebook версии 5.6.0 через Anaconda Navigator. Я пытаюсь разделить свой набор данных на Обучение и тестирование, но всякий раз, когда я выключаю и снова открываю свой ноутбук и повторно запускаю код, он создает другой набор для обучения и тестирования. Random_state работает, хотя, если я просто перезапустить код, не выключая ноутбук. Это нормально? Есть ли способ исправить это так, что даже если я закрою и снова открою ноутбук, он все равно разделит набор данных таким же образом>

Я установил случайное состояние метода train_test_split, но он по-прежнему вызывает другое разделение данных.

Вот мой код:

#Split dataset into Training and Testing
from sklearn.model_selection import train_test_split

y = train['Target']

x_train, x_test, y_train, y_test = train_test_split(train, y, test_size=0.2, random_state = 0)
x_train.head()

Результат первого запуска такой:

      |   ID        |    Country           |   Target

7093  |   9.56      |      Tokyo           |    Yes

5053  |   9.58      |      Bangkok         |    Yes

1627  |   9.53      |      New York        |    No

2514  |   9.55      |      Los Angeles     |    No

Значения повторного запуска показывают:

      |   ID        |    Country           |   Target

3805  |   9.51      |     Chicago          |    No

6730  |   9.59      |     Seattle          |    No

7623  |   9.57      |     Busan            |    Yes

7045  |   9.60      |     Seoul            |    Yes

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Откуда и как вы получаете данные тестирования?Если ваши данные поступают из динамического источника (случайно сгенерированные данные, данные с сервера, или если вы сокращаете данные, выбирая из них случайные значения), это будет причиной проблемы.Обычно я решал эту проблему, создавая копию моих данных, чтобы я мог сослаться на них, используя pickle.io.В этом коде предполагается, что у меня уже есть данные в качестве фрейма данных:

df.to_pickle(file_name)

Далее я просто использовал бы данные, которые я сохранил, используя:

df = pd.read_pickle(file_name)

Затем из sklearn.модель_выборный импорт train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=101)
0 голосов
/ 03 июня 2019

Попробуйте установить случайное состояние в numpy :

import numpy as np
np.random.seed(42)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...