code-review-101-JohnReed7

0
README.md

Анализ датасета Digits (Рукописные цифры)

Рецензенты

reviewer 1 - https://gitverse.ru/ArturAnv

reviewer 2 - https://gitverse.ru/alexeyumatov

Информация о студенте

ФИО

Леонтьев Назар Вадимович

Номер группы

РИ-150942/1

Описание проекта

Проект представляет собой исследовательский анализ данных (EDA) датасета рукописных цифр из библиотеки scikit-learn. Датасет содержит изображения цифр от 0 до 9, представленные в виде матриц 8×8 пикселей.

Цель

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

Задачи

  • Загрузка и подготовка данных
  • Анализ распределения целевой переменной (цифры 0-9)
  • Вычисление статистик пиксельных значений
  • Визуализация распределения классов
  • Отображение примеров рукописных цифр
  • Анализ интенсивности пикселей
  • Построение тепловых карт средних изображений

Используемые технологии

БиблиотекаНазначение
pandasРабота с табличными данными
numpyМатематические вычисления
matplotlibПостроение графиков
seabornСтатистическая визуализация
scikit-learnЗагрузка датасета

Структура проекта

📁 digits_analysis/ ├── 📄 main.py # Основной скрипт ├── 📄 README.md # Документация ├── 🖼️ 10_digits_target_distribution.png # Распределение классов ├── 🖼️ 10_digits_sample_images.png # Примеры цифр ├── 🖼️ 10_digits_pixel_analysis.png # Анализ пикселей └── 🖼️ 10_digits_mean_heatmaps.png # Тепловые карты

Описание функций

load_data()

Загружает датасет Digits и преобразует его в DataFrame с 64 пиксельными признаками и целевой переменной.

target_analysis(df)

Анализирует распределение цифр: выводит количество и процент каждого класса.

feature_statistics(df)

Вычисляет статистики пиксельных значений:

  • Среднее, медиана, минимум, максимум
  • Стандартное отклонение, дисперсия
  • Процент нулевых пикселей

visualize_target(df)

Создаёт визуализацию распределения классов:

  • Столбчатая диаграмма
  • Круговая диаграмма

sample_digit_images(df)

Отображает по одному примеру каждой цифры (0-9) в сетке 2×5.

pixel_intensity_analysis(df)

Строит 4 графика анализа интенсивности:

  • Гистограмма всех пиксельных значений
  • Средняя интенсивность по цифрам
  • Дисперсия пикселей по цифрам
  • Количество ненулевых пикселей по цифрам

heatmap_mean_images(df)

Создаёт тепловые карты усреднённых изображений для каждой цифры.

Информация о датасете

ПараметрЗначение
Количество образцов1797
Количество признаков64 (пиксели)
Размер изображения8×8 пикселей
Количество классов10 (цифры 0-9)
Диапазон значений пикселей0-16

Установка и запуск

1. Клонирование/скачивание проекта

2. Установка зависимостей

3. Запуск скрипта

Результаты

После выполнения скрипта создаются 4 визуализации:

ФайлСодержание
10_digits_target_distribution.png
Столбчатая и круговая диаграммы распределения цифр
10_digits_sample_images.png
Примеры изображений каждой цифры
10_digits_pixel_analysis.png
Анализ интенсивности пикселей (4 графика)
10_digits_mean_heatmaps.png
Тепловые карты средних изображений

Пример вывода в консоль

============================================================ ЗАДАНИЕ 10: EXPLORATORY DATA ANALYSIS - DIGITS DATASET ============================================================ Датасет загружен. Размер: (1797, 65) АНАЛИЗ ЦЕЛЕВОЙ ПЕРЕМЕННОЙ Распределение цифр (количество): 0 178 1 182 2 177 ... СТАТИСТИКА ПИКСЕЛЬНЫХ ЗНАЧЕНИЙ Среднее значение: 4.91 Максимум: 16.00 Минимум: 0.00 Стандартное отклонение: 5.33 ✓ График сохранён: 10_digits_target_distribution.png ✓ График сохранён: 10_digits_sample_images.png ✓ График сохранён: 10_digits_pixel_analysis.png ✓ График сохранён: 10_digits_mean_heatmaps.png Анализ завершен! ============================================================