Что сейчас самое ценное в мире? нефть, золото, бриллианты? Хотя все это отличные кандидаты, единственное, что их превосходит, - это «данные». В течение долгого времени данные были той нефтью, которая обеспечивает бесперебойную работу технологий, здравоохранения, маркетинга, развлечений и других подобных отраслей. В сегодняшнем быстро меняющемся мире, где клиенты избалованы выбором, одна ошибка в аналитике данных может дорого вам обойтись. Из-за этого важность точного сбора и обработки данных значительно возросла.

Одна из таких отраслей, в которой данные играют решающую роль, - это, конечно же, «спорт». Назовите любой вид спорта, и вы поймете, что он в основном определяется числами и статистикой. И как только вы погрузитесь в мир спортивной статистики, вы обязательно выберете один путь: прогноз победителя!

Мой интерес к играм и статистике НБА подтолкнул меня попробовать свои силы в прогнозировании победителя путем анализа доступных данных. Я стремлюсь сделать прогноз победителя для предстоящих игр НБА на основе общей производительности и совокупности каждой команды по отношению к своему сопернику. Вы также можете применить этот метод к любому другому виду спорта, командам или игрокам, чтобы предсказать результат в соответствии с вашими интересами. Однако следует отметить, что спорт - это не только статистика; это еще и спонтанные решения, упущенные возможности и героизм в последнюю минуту. Итак, цель этого метода - оценить приблизительные шансы команды на победу в любой день.

Для этого я использую Python в качестве языка сценариев и имитирую данные NBA (созданные по сезону 2018 года). Теперь, когда у нас все готово, пора начинать!

Шаг 1. Подготовьте набор данных

В целях этого эксперимента я высмеиваю только важные данные. Если у вас есть API-интерфейсы соответствующего вида спорта, вы можете разрезать данные и использовать их вместо этого. Нам нужно будет смоделировать два набора данных:

1. Основные данные команды: содержат основную информацию об участвующих командах.

2. Исторические данные команды: статистика за предыдущий сезон / турнир для каждой команды.

1. Основные данные команды

Чтобы предсказать победителя, нам понадобится список команд и их основные данные. На данный момент я использую поля TeamID и TeamName для имитации и добавления их в таблицу Excel. При желании вы также можете использовать дополнительные поля, такие как TeamColor, TeamArena / TeamStadium.

2. Исторические данные команды

Помимо базовой информации о каждой команде, нам также понадобится статистика за прошлый сезон / турнир, чтобы делать прогнозы. Я бы рекомендовал использовать большие наборы данных для достижения максимальной точности. На данный момент я высмеиваю данные только для следующих полей:

gameID, homeTeamScore, homeTeamID, visitorTeamScore, visitorTeamID.

Шаг 2. Наденьте шляпу программирования

Я использовал Python в качестве языка сценариев. Будучи новичком в Python, я использовал навигатор Anaconda и блокнот Jupyter.

2.1 Импорт необходимых пакетов

Среда Anaconda предоставляет несколько базовых пакетов, таких как «NumPy», «Pandas», «Json», «Matplotlib» и «Seaborn». Если вы хотите использовать API для получения данных с вашего сервера, вы можете использовать пакет «Запросы».

2.2 Инициализировать или получить прогнозную игру

Допустим, мы хотим предсказать победителя следующего матча между Atlanta Hawks и Miami Heat (TeamID 101 vs TeamID 112). Для этого мы сначала установим переменные.

2.3 Получите данные, чтобы начать

Теперь пришло время получить фиктивные данные, которые мы добавили в таблицу Excel. Вы также можете использовать CSV или базы данных.

Затем мы получим фиктивные данные с помощью пакета «Pandas».

2.4 Анализировать и подсчитывать количество сыгранных и выигранных игр каждой командой

Чтобы рассчитать количество выигранных и сыгранных игр для Miami Heat (Team1), нам нужно разбить фиктивные данные на разделы. В разделах мы нашли три подмножества:

Подмножество A: относится к играм, в которые играет Miami Heat (Team1).

Подмножество B: относится к играм, в которые играет Atlanta Hawks (Команда 2).

Подмножество пересечений: содержит общие элементы из подмножества A и подмножества B, то есть игр, в которые играют Miami Heat и Atlanta Hawks друг против друга.

Аналогичным образом нам нужно сделать срезы из всех данных для соответствующих команд, используя пакеты «Pandas». Для распространения данных вам нужно просто проверить, присутствует ли соответствующий идентификатор команды на домашней стороне или на стороне посетителей, как показано ниже:

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

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

2.5 Анализируйте результативность с оппонентом

В этом разделе мы проанализируем общее количество сыгранных игр и общее количество игр, выигранных каждой командой против своего оппонента. Это разделение данных будет выполнено на основе идентификаторов TeamID. Итак, в нашем примере Miami Heat (101) и Atlanta Hawks (102) должны принадлежать либо столбцу homeTeamID, либо столбцу visitorTeamID.

Выполните математические операции, чтобы получить графический результат

Теперь, когда мы знаем общее количество сыгранных игр и общее количество выигранных игр обеими командами в прошлых турнирах, а также общее количество сыгранных игр и общее количество выигранных игр друг против друга, все, что нам нужно сделать, это вычислить процент. Я использовал пакет «Seaborn» для отображения результата.

Распечатайте результат, чтобы предсказать победителя, используя комбинацию пакетов «Seaborn», «Matplotlib» и «Pandas».

Шаг 3. Предскажите победителя

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

Общий прогноз победителя

Если посмотреть на сравнительный график общих показателей обеих команд, то окажется, что у «Майами Хит» немного лучше, чем у «Атланта-Хоукс», и, следовательно, у него больше шансов на победу.

Личный прогноз победителя

Если вы посмотрите на статистику личных встреч и прошлые рекорды Miami Heat и Atlanta Hawks, вы увидите, что Atlanta Hawks выходят из числа беглых победителей!

Вывод

Как видите, на основе исторических данных вы можете предсказать, какая команда имеет наибольшие шансы на победу в той или иной игре, но, опять же, в спорте вы никогда не знаете, когда момент блеска или неверной оценки может изменить ход игры. Так что просто попытайтесь предсказать результат как можно лучше, а затем просто наслаждайтесь игрой!

P.S. Если вы хотите глубоко погрузиться в код, нажмите здесь!