Распознавание цифр, написанных от руки, с помощью Machine Learning
Каждый день люди сталкиваются с огромным количеством данных, но, несмотря на переход к электронному документообороту, встречаются документы, которые отсканированы человеком и содержат рукописный текст, в том числе цифры, даты, подписи и пр.
Распознавание рукописного текста – это огромная проблема, так как существует всего 10 цифр, а почерк человека может сильно варьироваться. И порой с задачей распознания рукописного текста не справляется даже сам человек, что уж говорить о почерке врача 😊
Классификация рукописного текста или цифр очень важна на практике, это поможет сократить время на разбор огромного количества данных.
В этой статье я хочу рассмотреть распознавание рукописных цифр от 0 до 9, с использованием известного набора данных digits библиотеки Scikit-learn, применяя классификатор логистической регрессии.
Кратко о наборе данных digits
Область данных digits содержит некоторое множество наборов данных, которые могут быть полезны для тестирования задач анализа данных и прогнозирования результатов.
Для того чтобы работать с распознаванием рукописного текста, вам понадобятся следующие библиотеки: matplotlib, sklearn, scipy.
На примере встроенного набора данных библиотеки sklearn — digits рассмотрим выполнение распознавания цифр. Для этого импортируем его, чтобы начать использовать.
Область данных digits представляет собой словарь, в котором содержатся данные, целевые объекты, изображения, а также названия объектов и описание набора данных с названиями целевых объектов и пр.
Я ориентируюсь на наборе данных и целевой функции, извлечем два списка в две разные переменные.
Давайте рассмотрим 3 модели: классификатор опорных векторов, классификатор деревьев решений и классификатор случайного леса, для того чтобы понять, как работает каждая из моделей на одном наборе данных.
Классификатор опорных векторов
Задача этого алгоритма заключается в том, чтобы найти гиперплоскость в n-мерном пространстве, где n – это число признаков, чтобы проклассифицировать все точки данных.
На выходе мы получили 100% совпадение, где 1791 значение используется для обучения, а 6 входных данных используются для тестирования.
Классификатор деревьев решений
В классификаторе дерева решений применяется простая идея решения задачи классифкации. Задается ряд тщательно продуманных вопросов об атрибутах тестовой записи. Каждый раз, когда будет задан вопрос – на выходе получаем ответ до тех пор, пока не будет сделан вывод о классовой метке записи.
Как можно видеть, классификатор дерева решений плохо работает с данными. Вы можете попробовать повысить точность путем настройки гиперпараметров DTC.
Классификатор случайного леса
Случайный лес – является контролируемым алгоритмом обучения. Его используют как для классификации, так и для регрессии.
При случайном лесе можно создать деревья решений на случайно выбранных выборках набора данных и получают прогноз каждого дерева и впоследствии выбирают лучшее решение с помощью голосования.
Таким образом, мы можем увидеть, что случайный лес отлично работает на меньшем количестве данных в сравнении с деревом решений. Оценка точности составляет 92%.
Согласно гипотезе, при настройке гиперпараметра с помощью различных моделей можно достичь более 96% точности распознавания рукописного набора данных. Но прежде необходимо убедиться, что тестовые данные будут хорошими, иначе модель может быть перегружена.
Удачи в кодировании! 😊
А Вы не пробовали использовать PANN? Легкая сеть, которую можно настроить даже на распознавание цифр написанных рукой в воздухе. Я бы посмотрел, думаю это в Вашей теме.