Как использовать train.csv , test.csv и ground_truth.csv в модели машинного обучения? (перекрестная проверка / python)

#python #numpy #machine-learning #scipy #cross-validation

#python #numpy #машинное обучение #сципи #перекрестная проверка #scipy

Вопрос:

До сих пор у меня был только один набор данных (df.csv). До сих пор я использовал размер проверки в 20% и .train_test_split для обычной регрессионной модели.

 array = df.values
X = array[:,0:26]
Y = array[:,26]
validation_size = 0.20
seed = 7
X_train, X_validation, Y_train, Y_validation =
   cross_validation.train_test_split(X, Y,
   test_size=validation_size, random_state=seed)
num_folds = 10
num_instances = len(X_train)
seed = 7
scoring = 'mean_squared_error'
  

Когда у меня есть три отдельных набора данных (train.csv/test.csv/ground_truth.csv), как я могу с этим справиться? Конечно, сначала я использую train.csv, затем test.csv и, наконец, ground_truth. Но как мне реализовать эти разные наборы данных в моей модели?

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

1. Ваш вопрос на самом деле не имеет смысла, поскольку нет причин переносить разбивку train / test / validation в файлы csv во время обучения вашей модели. Я рекомендую просмотреть примеры в документации sklearn, а затем опубликовать полную попытку регрессии. scikit-learn.org/stable/modules/cross_validation.html

2. Спасибо за ваше замечание. Но это именно моя проблема, я знаю, как справиться с перекрестной проверкой, когда у меня есть только 1 набор данных. Но в моем случае у меня есть три набора данных. train_data с событиями запуска до сбоя, test_data без событий сбоя (для этого мне нужен прогноз) и ground_through_data, где определено оставшееся значение.

Ответ №1:

При выполнении перекрестной проверки обучающие и тестовые данные представляют собой, по сути, один и тот же набор данных, который разделяется по-разному, чтобы предотвратить переобучение. Количество сгибов указывает на различные способы разделения набора.

Например, 5-кратная перекрестная проверка разбивает обучающий набор на 5 частей, и каждый раз 4 из них используются для обучения и 1 для тестирования. Итак, в вашем случае у вас есть следующие варианты:

Либо выполните перекрестную проверку только на обучающем наборе, затем проверьте с помощью тестового набора и базовой истины (подгонка выполняется только на обучающем наборе, поэтому, если все сделано правильно, точность теста и базовой истины должны быть одинаковыми), либо объедините обучение и тестирование для большего и, возможно, более репрезентативного набора данных, а затемпроверка на истинность.

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

1. «Либо выполните перекрестную проверку только на обучающем наборе, затем проверьте с помощью тестового набора […]» Вот в чем дело. Я действительно новичок в этой области. Как бы это выглядело, если у вас есть обученная модель (уже выполненная перекрестная проверка и т. Д.) И вы хотите протестировать ее на втором наборе данных (test.csv)? Существует ли шаблон или стандартный подход, как в моем коде выше?

2. Зависит от используемой вами структуры / алгоритма. Из опубликованного вами кода я предполагаю, что вы хотите использовать линейную регрессию sklearn. Вы можете проверить официальную документацию scikit-learn.org/stable/modules/generated /… и поиск примеров. Опубликованный вами код служит только для разделения обучающего набора.