code-review-101-alexeyumatov

0
README.md

Задание 10: Анализ датасета Digits

Информация о рецензируемых работах

Рецензент 1: https://gitverse.ru/confucius
Рецензент 2: https://gitverse.ru/Farid


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

ФИО: Юматов Алексей Андреевич
Группа: РИ-150942/3
Номер задания: 10
Датасет: Digits (рукописные цифры 0-9)


Описание задания

Провести exploratory data analysis (EDA) датасета Digits, содержащего изображения рукописных цифр размером 8x8 пикселей. Каждое изображение представлено 64 пиксельными признаками со значениями от 0 до 16.

Цель: Анализ данных рукописных цифр для многоклассовой классификации (10 классов: цифры 0-9).


Выполненные работы

1. Загрузка данных (
load_data
)

  • Загружен датасет Digits с помощью
    sklearn.datasets.load_digits()
  • Создан DataFrame с 64 пиксельными признаками (
    pixel_0
    -
    pixel_63
    )
  • Добавлена целевая переменная
    target
    (цифры 0-9)

2. Анализ целевой переменной (
target_analysis
)

  • Вычислено распределение цифр в датасете
  • Рассчитан процент каждой цифры
  • Выведена статистика по классам

3. Статистика признаков (
feature_statistics
)

  • Рассчитаны основные статистики пиксельных значений:
    • Среднее значение
    • Максимальное и минимальное значения
    • Стандартное отклонение

4. Визуализация распределения (
visualize_target
)

  • Создана столбчатая диаграмма распределения цифр
  • Создана круговая диаграмма для наглядности
  • Сохранено в
    10_digits_target_distribution.png

5. Примеры изображений (
sample_digit_images
)

  • Визуализированы примеры каждой цифры (0-9)
  • Изображения преобразованы из 64-мерного вектора в матрицу 8x8
  • Использована серая цветовая схема
  • Расположены в сетке 2x5
  • Сохранено в
    10_digits_sample_images.png

6. Анализ интенсивности пикселей (
pixel_intensity_analysis
)

Создано 4 графика:

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

7. Тепловые карты (
heatmap_mean_images
)

  • Вычислены средние изображения для каждой цифры
  • Визуализированы как тепловые карты 8x8 с цветовой схемой 'hot'
  • Расположены в сетке 2x5
  • Добавлены цветовые шкалы для каждой карты
  • Сохранено в
    10_digits_mean_heatmaps.png

Статистика

МетрикаЗначение
Общее количество образцов1797
Количество признаков64 (8x8 пикселей)
Количество классов10 (цифры 0-9)
Среднее значение пикселей~7.81
Максимальное значение пикселя16
Минимальное значение пикселя0
Стандартное отклонение~6.17
Размер изображения8x8 пикселей
Сбалансированность классов~10% на каждый класс

Ключевые находки

  1. Сбалансированность данных: Датасет хорошо сбалансирован - каждая цифра представлена примерно в равных пропорциях (~10% каждая).

  2. Распределение пикселей: Большинство пикселей имеют значение 0 (фон), что создаёт бимодальное распределение с пиками на 0 и в диапазоне активных пикселей.

  3. Интенсивность по цифрам: Разные цифры имеют различную среднюю интенсивность пикселей, что может быть полезным признаком для классификации.

  4. Вариативность: Дисперсия пикселей различается между цифрами, что указывает на разную степень вариативности написания.

  5. Количество активных пикселей: Среднее количество ненулевых пикселей варьируется между цифрами - некоторые цифры (например, 1) занимают меньше пространства, чем другие (например, 8).

  6. Тепловые карты: Средние изображения цифр чётко показывают характерные паттерны для каждого класса, что свидетельствует о хорошем качестве данных.


Созданные файлы

Добавлены:

  • assignment.py
    - основной скрипт с реализацией всех функций
  • 10_digits_target_distribution.png
    - распределение цифр (столбчатая и круговая диаграммы)
  • 10_digits_sample_images.png
    - примеры изображений каждой цифры
  • 10_digits_pixel_analysis.png
    - анализ интенсивности пикселей (4 графика)
  • 10_digits_mean_heatmaps.png
    - тепловые карты средних изображений
  • README.md
    - данный отчёт

Удалены:

  • Все лишние markdown файлы (кроме README.md и CONTRIBUTING.md)

Технологии

  • Python 3.x
  • pandas - работа с данными
  • numpy - численные вычисления
  • matplotlib - визуализация
  • seaborn - дополнительная визуализация
  • scikit-learn - загрузка датасета

Запуск

Результат: создаются 4 PNG файла с визуализациями и выводится статистика в консоль.


Примечания

Код соответствует требованиям PEP8, все функции документированы, визуализации сохраняются в высоком разрешении (300 dpi).