подходящая модель при использовании перекрестной проверки для оценки производительности - PullRequest
1 голос
/ 14 мая 2019

Я сейчас пытаюсь сравнить несколько моделей. Я сделал скрипт, который оценивает производительность, используя 10-кратную перекрестную проверку, чтобы получить наиболее реалистичную производительность. Мой вопрос: имеет ли значение, к каким данным обучения и испытаний он подходит? например Должен ли я найти тренировочный и испытательный набор, который дал наилучшие результаты и снова соответствовать модели после

CV = model_selection.KFold(n_splits=K, shuffle=True)
# Split data

for train_index, test_index in CV.split(X, y):

    for model in models:

        # splitting up data set
        X_train = X.iloc[train_index]
        y_train = y.iloc[train_index]
        X_test = X.iloc[test_index]
        y_test = y.iloc[test_index]

        model.fit(X_train, y_train)
        print(model.score(X_test, y_test) * 100)

1 Ответ

0 голосов
/ 14 мая 2019

Мне кажется, что этот вопрос гораздо лучше для Перекрестной проверки Сообщество Exchange Stack, чтобы ответить (и существует множество постов по перекрестной проверке ).

Однако, поскольку вы спросили об этом при переполнении стека ... Как прокомментировал пользователь 9769953: это имеет значение.

На мой взгляд, перекрестная проверка имеет два основных применения:

  1. Проверка,данные существенно различаются в один раз, чтобы исказить обучение модели.
  2. Проверка производительности по невидимым данным (пропущенный сгиб).

Ожидаемый результатчто у вас будут разные результаты (один и тот же результат для каждого фолда должен вызывать у вас подозрения в отношении данных или процесса обучения модели).

Выполнение перекрестной проверки имеет смысл только как среднее значение по всем показателям.складывает результаты.Это более реалистичное значение для производительности по сравнению с «1-кратной проверкой» (т. Е. Запуском модели на данных, по которым она изучала), поскольку обычно вы будете запускать модель на данных, которых модель не видела.

...