Я бы рекомендовал настроить значение k
для k-NN. Поскольку iris - это небольшой набор данных, хорошо сбалансированный, я сделаю следующее:
For every value of `k` in range [2 to 10] (say)
Perform a n-times k-folds crossvalidation (say n=20 and k=4)
Store the Accuracy values (or any other metric)
Нанесите оценки на основе среднего значения и дисперсии и выберите значение k
с наилучшим значением k. Основной целью перекрестной проверки является оценка ошибки теста, и на основании этого вы выбираете окончательную модель. Будет некоторое отклонение, но оно должно быть меньше 0,03 или что-то в этом роде. Это зависит от набора данных и количества сгибов, которые вы берете. Один хороший процесс заключается в том, что для каждого значения k
составьте коробочный график со всеми значениями точности 20x4. Выберите значение k
, для которого нижний квантиль пересекает верхний квантиль, или, простыми словами, не слишком много изменений в точности (или других значениях метрики).
После того, как вы выберете значение k
на основании этого, цель состоит в том, чтобы использовать это значение для построения окончательной модели, используя весь набор обучающих данных. Затем это можно использовать для прогнозирования новых данных.
С другой стороны, для больших наборов данных. Сделайте отдельный тестовый раздел (как вы делали здесь), а затем настройте значение k
только на обучающем наборе (используя перекрестную проверку, забудьте о тестовом наборе). После выбора соответствующего k
обучающего алгоритма используйте только обучающий набор для обучения. Затем используйте набор тестов, чтобы сообщить окончательное значение. Никогда не принимайте никаких решений на основе тестового набора.
Еще один метод - это тренировка, проверка, тестовый раздел. Тренируйтесь, используя набор поездов, и модели поездов, используя различные значения k
, а затем прогнозируйте, используя раздел проверки и составьте список результатов. Выберите лучший результат на основе этого раздела проверки. Затем используйте поезд или поезд + набор проверки для обучения окончательной модели с использованием значения k
, выбранного на основе набора проверки. Наконец, выньте тестовый набор и сообщите окончательный результат. Опять же, никогда не используйте набор тестов где-либо еще.
Это общие методы, применимые к любым методам машинного обучения или статистического обучения.
Важно отметить, что при выполнении раздела (поезд, тест или для перекрестной проверки) используйте стратифицированную выборку , чтобы в каждом разделе коэффициенты классов оставались одинаковыми.
Подробнее о кроссвалидация . В scikitlearn это легко сделать. Если вы используете R, вы можете использовать курсор .
Главное помнить, что цель состоит в том, чтобы обучить функцию, которая обобщает новые данные, или хорошо работает с новыми данными, а не работает не только хорошо с существующими данными.