#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 /… и поиск примеров. Опубликованный вами код служит только для разделения обучающего набора.