Python. Машинное обучение. Продолжение 3.

Продолжим изучать машинное обучение на Python. На прошлом уроке мы при помощи модели поиска дефектов и модели пикселей пытались исправить испорченную картинку. Кратко напомню суть эксперимента: при помощи модели дефектов ищем дефектный пиксель и при помощи модели пикселя предсказываем, какой там должен быть пиксель. Дефектный пиксель заменяем на тот, что должен быть. В итоге у нас не получилось исправить картинку, вот как выглядит она после такого «исправления»:

Мы решили попробовать сделать следующее:

  • Взять другую модель
  • По-другому сформировать выборку

Для того, чтобы взять другую модель, нам необходимо как-то оценивать ее. Будем оценивать по количеству ошибок. Но сначала проведем небольшой рефакторинг, чтобы не путаться в коде. Во-первых, создадим файл detectors.py, куда поместим вот такой код:

Как видим, мы оформили алгоритм создания выборки в виде удобного класса, то есть, по сути, используем ООП. Далее, для тестирования тоже создадим отдельный класс ModelTester и разместим его в файле tester.py:

Теперь осталось сделать запускаемый файл (main.py), который теперь выглядит компактно и лаконично:

 

Теперь кратко объясняю, что делает наша программа. Класс DefectDetector содержит в себе алгоритмы создания обучающей выборки для поиска дефектных пикселей. Он такой-же, как и на предыдущих уроках, за исключением маленького нюанса: в датафрейм выборки добавлено булево поле flag, которое заполняется по рандому. Для чего это надо – чтобы разделить выборку на две – тренировочную и тестовую. Деление происходит путем вызова метода query где мы просто задаем этот флаг в качестве условия. Для одной выборки – прямое условие (туда попадут все записи где flag=True), для второй условие с инверсией, туда, соответственно попадут строк где этот флаг False.

Собственно, командной:

Мы делим выборку на две. Далее, обучаем модель на тренировочной выборке и проводим ее тестирование. Для сравнения тестируем и на тестовой и на тренировочной выборке.

В данном коде приведен пример обучения модели «Случайный лес». Но мы можем использовать и другие модели. Для этого нам надо только их импортировать. Вот так импортируется случайный лес:

А вот так можно импортировать другие модели:

 

Теперь исследуем все эти модели, сведя их показатели в сравнительную таблицу:

 

Модель Обучающая выборка, кол-во ошибок, % Тестовая выборка, кол-во ошибок, %
Ошибки YES Ошибки NO Ошибки YES Ошибки NO
Случайный лес 0 0 4.2 3.3
SVC 3.9 10.11 5.7 11.6
Наивный байес 24.9 46.8 27.3 44.2
Решающее дерево 0 0 7.8 11.1
K-ближайших соседей 0.4 20.6 0.7 27.4

 

Таким образом, мы видим, что лучшая модель – это случайный лес. То, что мы выбрали вначале. Нужно пробовать другие способы. Но об этом в следующей статье.

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar