
В детстве геймдизайнер Сатоси Тадзири увлекался коллекционированием насекомых, популярным в Японии развлечением того времени. Дети ловили и собирали живых насекомых, обменивались ими с друзьями. Со временем Тадзири переехал в Токио, где серьёзно увлёкся компьютерными играми, многие из которых впоследствии оказали влияние на его будущие проекты. Одним из таких проектов является Pokémon или Pocket Monsters — серия игр, разрабатываемая студиями Game Freak и Creatures Inc. и издаваемая Nintendo как часть франчайзинга «Покемон». Самые первые игры, Pokémon Red и Blue, вышли в 1996 году, с тех пор игры серии выходят регулярно. Сюжеты повествуют о покемонах — существах, отлавливаемых и тренируемых людьми для боёв. Итоговая цель игр основной серии — поймать все виды покемонов.
В анализе был использован датасет Pokemon Dataset by Rounak Banik [1], содержащий информацию о всех 802 покемонах из всех семи поколений игры Pokémon. Сведения включают в себя базовые характеристики, эффективность против других типов, рост, вес, классификацию, шаги для выведения из яйца, опыт, способности и многое другое.
В ходе анализа выясняются ответы на вопросы:
(1) Можно ли построить классификатор, определяющий легендарного покемона?
(2) Как рост и вес покемона связаны с его базовыми характеристиками?
(3) Какие факторы влияют на опыт и шаги для выведения из яйца? Есть ли корреляции?
(4) Какой тип покемонов самый сильный в целом? А самый слабый?
(5) Покемоны какого типа чаще всего бывают легендарными?
(6) Можно ли собрать «Dream Team» из 6 покемонов с максимумом урона и устойчивостью?
Используются следующие виды визуализации: (1) диаграммы, показывающие распределение базовых характеристик покемонов; (2) тепловая карта, отображающая топ-10 сильнейших корреляций между числовыми признаками; (3) violin-плоты, отображающие распределение признаков для топ-10 корректирующих переменных; (4) рассеяная диаграмма, визуализирующая зависимости разных показателей, например, количество очков здоровья от роста опыта; (5) столбиковая диаграмма, показывающая какие основные типы покемонов являются наиболее сильными или слабыми; (6) горизонтальный barplot, отображающий, насколько часто встречаются легендарные в рамках каждого типа; (7) небольшие таблицы, отображающие сортировку данных
Для оформления используются собственные генерации картинок с изображением персонажей, а так же яркие цвета, часто используемые в дизайне большинства покемонов — FF595E, FFCA3A, 8AC926, 1982C4, 6A4C93, FF924C
Распределение числовых признаков
На диаграммах представлены распределения 6 основных боевых параметров покемонов
Большинство характеристик распределены неравномерно, с явными пиками в «средних значениях». Есть единичные мощные покемоны с высокими значениями (hp, attack, speed > 150), которые создают длинные «хвосты». Специальная атака и скорость — одни из наиболее разнообразных параметров среди популяции. Типичное значение большинства статов лежит в пределах 60–90.
Корреляция между числовыми признаками
На тепловой карте представлены признаки с наибольшими по модулю значениями коэффициента корреляции Пирсона. Это позволяет понять, какие переменные наиболее тесно связаны друг с другом.
Основные высокие корреляции
Суммарная сила (base_total) логично коррелирует с всеми боевыми характеристиками (спец. защита, физ. атака, HP и др.). Физические параметры (рост и вес) умеренно коррелируют с HP и боевыми характеристиками. Легендарность покемона тесно связана с высокой стоимостью выведения (шаги до яйца). Уязвимость к типам (призрачный, тьма) практически не коррелирует с другими числовыми параметрами.
Вывод: Сильные покемоны действительно отличаются размером, мощными боевыми статами и сложностью получения. Корреляции подтверждают, что параметры физического тела и боевого потенциала взаимосвязаны, особенно у редких (легендарных) видов.
Топ-10 коррелирующих переменных
violin-плоты, отображающие распределение признаков для топ-10 корректирующих переменных
(1) Физические параметры: Рост (м) и Вес (кг) имеют сильную правую асимметрию (вытянутые хвосты), что указывает на наличие немногочисленных, но очень крупных покемонов. Оба распределения имеют моду около 1 метра и 50 кг соответственно. (2) Защита: Физическая защита и Спец. защита распределены достаточно симметрично, но с жирными хвостами: есть покемоны с экстремально высокой защитой. Основная масса — в диапазоне 50–100 единиц. (3) Атака и сила: Спец. атака и Физ. атака имеют более плавное, симметричное распределение, с редкими выбросами (например, у легендарных). Суммарная сила имеет два выраженных пика — один в районе 300–400, второй около 500–600, что может соответствовать базовым и продвинутым формам покемонов. (4) Уязвимости: Уязвимость к призрачным и боевым атакам имеет многоуровневую структуру (0.0, 0.5, 1.0, 2.0, 4.0), что соответствует механике типа (иммунитет, слабость, двойная слабость). Распределения многомодальные — с пиками на типичных значениях (например, 1.0 и 2.0). (5) Эволюционные характеристики: Шагов до яйца имеет крайне асимметричное распределение с выбросами (легендарные требуют 30,720 шагов). Легендарный — бинарный признак (0 или 1), что хорошо видно на плотном распределении около 0. (6) Прочие: Скорость и Очки здоровья (HP) распределены с умеренной асимметрией, пик на 60–80. Хвост — в сторону мощных, быстрых покемонов.
Violin-графики показывают, что большинство признаков имеют явно выраженные моды и хвосты, особенно у легендарных, крупных и сильных покемонов. Некоторые переменные (например, уязвимость, легендарность, шагов до яйца) носят дискретный или мультиуровневый характер, что важно учитывать при моделировании.
(1) Можно ли построить классификатор, определяющий легендарного покемона?
Базовая модель классификации на основе числовых признаков (характеристики, рост, вес, уязвимости и т. д.)
Базовая модель классификации на основе числовых признаков (характеристики, рост, вес, уязвимости и т. д.)
Да! Мы построили базовую модель классификации на основе числовых признаков (характеристики, рост, вес, уязвимости и т. д.) и получили отличные результаты: Метрики на тестовой выборке:
Accuracy (общая точность): 0.97 F1-score (macro avg): 0.91
Модель почти безошибочно определяет обычных покемонов. Легендарные определяются с precision 93% и recall 76%, что уже хорошо, особенно при сильном дисбалансе классов (17 легендарных vs 179 обычных). F1 = 0.84 для легендарных покемонов — отличный результат для простой модели.
Вполне реально построить точный классификатор, способный определять легендарных покемонов. Мы получаем высокую точность даже без глубокой оптимизации модели.
(2) Как рост и вес покемона связаны с его базовыми характеристиками?
Цель анализа — понять, влияют ли физические параметры покемона — рост (height_m) и вес (weight_kg) — на его боевые характеристики, а именно:
hp — очки здоровья attack — физическая атака defense — физическая защита sp_attack — специальная атака sp_defense — специальная защита speed — скорость base_total — суммарная сила
План исследования: (1) Рассчитать корреляции между физическими параметрами и боевыми характеристиками. (2) Построить scatter-плоты с регрессионной линией для визуализации. (3) Интерпретировать, есть ли выраженные зависимости.
Гипотезы: — более тяжёлые и высокие покемоны могут иметь больше HP и силу, но, возможно, ниже скорость. — лёгкие и маленькие — могут быть быстрее, но менее защищённые.
Корреляция роста и веса с боевыми характеристиками
Корреляция роста и веса с боевыми характеристиками
Вес имеет умеренную положительную корреляцию с Очками здоровья, Физ. атакой, Суммарной силой (~0.3–0.5). Рост также показывает слабую положительную корреляцию с характеристиками, особенно HP и base_total. Скорость имеет слабую обратную связь с весом — тяжёлые покемоны обычно медленнее. Зависимости выражены, но не абсолютны — физические параметры лишь частично объясняют силу.
Рост и вес частично коррелируют с боевыми характеристиками: крупные покемоны действительно чаще обладают большим запасом HP и атакой, но не всегда превосходят в скорости или спец. защите.
(3) Какие факторы влияют на опыт и шаги для выведения из яйца? Есть ли корреляции?
Цель анализа — выяснить, какие параметры покемонов связаны с:
experience_growth — скоростью накопления опыта base_egg_steps — числом шагов до выведения из яйца
План исследования: (1) Проверить корреляции признаков с переменными: — рост (height_m) — вес (weight_kg) — базовые характеристики (hp, attack, base_total и др.) — тип (type1) — поколение (generation) — базовое счастье (base_happiness) — легендарность (is_legendary) (2) Построить корреляционную таблицу и визуализации (violin / scatter plots). (3) Сформулировать выводы: — какие признаки объясняют сложность прокачки? — что влияет на количество шагов для выведения?
Гипотезы: — легендарные покемоны и поздние поколения будут иметь больше шагов до яйца и сложнее кривую опыта. — физические параметры и сила покемона могут коррелировать с base_egg_steps и experience_growth.
Корреляции с опытом и шагами до выведения
Визуализация зависимостей с помощью рассеянных диаграмм
Визуализация зависимостей с помощью рассеянных диаграмм
— рост опыта (experience_growth) — шагов до выведения из яйца (base_egg_steps)
против:
— базовых боевых характеристик — физических параметров (рост, вес) — легендарности, поколения и базового счастья
Сложность выведения и прокачки покемона действительно связана с его силой, размером и особенно — легендарностью. Чем сильнее и редкий покемон, тем больше шагов до вылупления и медленнее рост опыта. Также видно что счастливые покемоны (например, дружелюбные или эволюционирующие по счастью) вылупляются легче. Физические параметры (рост и вес) — важны, но не доминируют.
(4) Какой тип покемонов самый сильный в целом? А самый слабый?
Цель анализа — определить, какие основные типы покемонов (type1) являются наиболее сильными или слабыми, используя данные об их уязвимости к атакам других типов (against_* признаки).
Что такое against_* признаки? Это численные значения, показывающие, во сколько раз покемон данного типа получает урон от конкретного типа атаки. Например: against_fire = 2.0 → покемон получает в 2 раза больше урона от огня against_fairy = 0.5 → в 2 раза меньше от фейри
План исследования: (1) Выбрать 18 признаков against_*. (2) Для каждого типа из type1: — рассчитать среднюю уязвимость к каждому типу атак — посчитать среднюю уязвимость в целом (3) Отсортировать типы по уязвимости: кто получает меньше всего урона → тот сильнее (4) Визуализировать результат (таблица и график) (5) Сформулировать выводы
Тип считается сильным, если он устойчив к большинству атак и не имеет ярко выраженных слабостей.
Столбиковая диаграмма, показывающая какие основные типы покемонов являются наиболее сильными или слабыми
Что было сделано: (1) Использовались признаки against_*, которые показывают, насколько сильно покемоны получают урон от каждого типа атаки. (2) Для каждого основного типа (type1) посчитан средний входящий урон от всех атакующих типов. (3) Чем ниже средняя уязвимость, тем устойчивее тип в целом.
Слева: топ-5 самых устойчивых типов (наименьшая уязвимость) // Справа: топ-5 самых уязвимых типов (наибольшая средняя уязвимость)
Тип «Сталь» — самый устойчивый в игре. Он получает пониженный урон от множества типов, в том числе нормального, травяного и психического.
Тип «Камень» — самый уязвимый, в среднем получает больше урона почти от всех атак. Также у него высокая слабость к воде, траве и бойцам.
«Сталь», «Призрак», «Фейри» — наиболее сбалансированные и устойчивые типы покемонов в боях. В то время как «Камень», «Лёд» и «Трава» страдают от множества слабостей и, в среднем, получают значительно больше урона.
Такая информация полезна при: — построении сбалансированной команды — выборе типа лидера — оценке слабых мест врага
(5) Покемоны какого типа чаще всего бывают легендарными?
Цель анализа — определить, покемоны каких типов (type1) чаще всего являются легендарными, и какие типы, наоборот, почти не представлены среди легендарных.
План исследования: (1) Использовать колонку pokemon.csv/is_legendary (значения: 0 — обычный, 1 — легендарный) (2) Группировать покемонов по type1 (3) Для каждого типа посчитать: — общее количество покемонов — количество легендарных — долю легендарных среди всех (в %) (4) Визуализировать долю легендарных покемонов по типам
Горизонтальный barplot, отображающий, насколько часто встречаются легендарные в рамках каждого тип
Слева: топ-5 типов с наибольшей долей легендарных // Справа: топ-5 типов с с минимальной долей легендарных
Что было сделано: (1) Посчитана доля легендарных покемонов (is_legendary = 1) в каждом типе type1. (2) Построен горизонтальный barplot, отображающий, насколько часто встречаются легендарные в рамках каждого типа.
Топ-5 типов с наибольшей долей легендарных: эти типы имеют наиболее высокую концентрацию легендарных покемонов, т. е. каждый 3-й или 4-й представитель — легенда.
Типы с минимальной долей легендарных: эти типы можно считать «более массовыми» — среди них крайне мало редких легендарных особей.
Тип «Летающий» — лидер по концентрации легендарных. Также высоко представлены драконы, психические и стальные покемоны. В то же время обычные, травяные и насекомые — наоборот, почти не имеют легендарных представителей.
Это знание полезно для: — генерации команд против легендарных — выбора редких покемонов в стратегиях — анализа типа → редкость → сила
(6) Можно ли собрать «Dream Team» из 6 покемонов с максимумом урона и устойчивостью?
Цель — сформировать команду из 6 покемонов, которая: — наносит максимальный урон по всем типам (сильное покрытие) — обладает устойчивостью к большому числу атак (низкие значения against_*) — сбалансирована по боевым характеристикам (HP, атака, защита и т. д.) — состоит не обязательно из легендарных (но может включать)
План исследования: (1) Вычислить общий урон каждого покемона — среднее значение по признакам against_* (обратная метрика). —чем меньше against_*, тем устойчивее. (2) Посчитать боевой рейтинг — сумму или среднее ключевых статов (hp, attack, sp_attack, defense, sp_defense, speed) (3) Учитывать разнообразие типов (type1), чтобы не было односторонней команды (4) Отсортировать покемонов по комбинированному рейтингу и выбрать топ-6
Можно ли собрать «Dream Team» из 6 покемонов, которые наносят максимум урона и устойчивы к другим командам? — Да, можно! Ниже — идеальная команда по метрике «сила / уязвимость»:
Идеальная команда по метрике «сила / уязвимость»
Идеальная команда по метрике «сила / уязвимость»
Критерии отбора: (1) Сила — сумма базовых характеристик (HP, атака, защита и т. д.). (2) Устойчивость — средняя уязвимость к атакам всех типов. (3) Индекс силы = Сила / Устойчивость — итоговая метрика.
Наблюдения: — тип Сталь доминирует — 4 из 6 лучших покемонов. — все участники имеют высокую базовую силу (600+) и низкую уязвимость (≤ 1.0). — присутствует баланс между атакой, защитой и выживаемостью. — команда включает легендарных и полулегендарных особей.
Вывод: да, возможна сборка «мечты» из покемонов, которая максимизирует силу и минимизирует урон от атак. Эта команда эффективна как в PvP, так и в PvE сценариях — против большинства типов.
Описание применения генеративной модели
Chat GPT — вопросы по улучшению кода, инструкции по правильному имплементированию каких-либо функций, библиотек и т. п. Генерация картинок с персонажами.
Adobe Color — генерация цветовой палитры и ее редактирование на основе загруженного изображения
Список источников
[1] Датасет «Pokemon Dataset by Rounak Banik» на Kaggle Источник данных: Serebii.net