Распознавание рукописного текста - проблема, которая восходит к первым автоматам, которым требовалось распознавать отдельные символы в рукописных документах. Классификация рукописного текста или чисел важна для многих реальных сценариев. Например, почтовая служба может сканировать почтовые индексы на конвертах, чтобы автоматизировать группировку конвертов, которые необходимо отправить в одно и то же место. В этой статье описывается распознавание рукописных цифр (от 0 до 9) с использованием известного набора данных digits из Scikit-Learn с помощью классификатора под названием Логистическая регрессия.

Scikit-Learn - это библиотека для Python, содержащая множество полезных алгоритмов, которые можно легко реализовать и изменить для целей классификации и других задач машинного обучения.

Одна из самых интересных особенностей библиотеки Scikit-Learn заключается в том, что в ней есть 4-этапный шаблон моделирования. что упрощает кодирование классификатора машинного обучения:

1. Импортируйте модель, которую хотите использовать.

В Scikit-Learn все модели машинного обучения реализованы как классы Python.

2. Создайте экземпляр модели.

3. Обучение модели на данных и сохранение информации, полученной из данных.

4. Предсказание меток новых данных
с использованием информации, полученной моделью в процессе обучения.

Предпосылки

Если у вас уже есть блокнот Jupyter и установлены все необходимые библиотеки и пакеты Python, вы готовы приступить к работе.

Если нет, вы тоже можете использовать colab!

Выполнение

Загрузка набора данных.

Библиотека Scikit-learn предоставляет множество наборов данных, среди которых мы будем использовать набор данных изображений под названием Digits. Этот набор данных состоит из 1797 изображений размером 8x8 пикселей. . Каждое изображение представляет собой рукописную цифру в оттенках серого.

Мы загружаем набор данных, как показано ниже:

Теперь, когда мы загрузили наш набор данных, мы можем запустить следующую команду, чтобы узнать форму набора данных:

Визуализация изображений и меток в нашем наборе данных

Мы можем получить изображение в оттенках серого с помощью библиотеки matplotlib.

Приведенные выше команды дают следующий результат:

Разделение нашего набора данных на обучающий и тестовый наборы

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

4-шаговый шаблон моделирования Scikit-Learn

Шаг 1. Импортируем модель, которую мы хотим использовать.

Здесь мы будем использовать логистическую регрессию. Логистическая регрессия является линейным классификатором и поэтому используется, когда между данными существует какая-то линейная связь.

Шаг 2. Создание экземпляра модели.

Шаг 3. Обучение модели

Здесь Модель изучает взаимосвязь между цифрами (x_train) и метками (y_train)

Шаг 4. Прогнозирование ярлыков новых данных.

Используя информацию, которую Модель усвоила в процессе обучения.

Измерение производительности нашей модели

Чтобы проверить точность наших прогнозов, мы можем использовать precision_score

Это число представляет собой вероятность того, что цифры в тестовой выборке будут отнесены к правильной категории, что означает, что мы получаем 95,11% правильных цифр.

Матрица путаницы

Матрица неточностей - это таблица, которая часто используется для оценки точности модели классификации. Мы можем использовать Seaborn или Matplotlib для построения матрицы путаницы. Мы будем использовать Seaborn для нашей матрицы путаницы.

Приведенный выше код отображает матрицу путаницы, как показано ниже.

Вывод

Из этой статьи мы можем увидеть, насколько легко импортировать набор данных, построить модель с помощью Scikit-Learn, обучить модель, делать прогнозы с ее помощью и определять точность нашего прогноза (в нашем случае это 95,11%). Надеюсь, эта статья поможет вам в ваших будущих начинаниях!

Спасибо, что прочитали мою статью!

Чтобы увидеть исходный код, нажмите здесь.