Этот репозиторий содержит набор инструментов, проектов и ресурсов, которые обеспечивают эффективный анализ и визуализацию футбольных данных.
Этот репозиторий содержит набор инструментов, проектов и ресурсов, которые направлены на поддержку создания значимой информации от футбольных данных. Python используется для извлечения, обработки, анализа и визуализации данных о событиях, агрегированных данных команды, данных о рыночной стоимости и многого другого.
Репозиторий разбивается на проекты Mutliple и субпроекты, каждый из которых направлен на проведение подробного анализа, генерировать некоторую конкретную информацию или представить некоторый уровень автоматизации для анализа футбольных данных. Используя содержимое этого репозитория, был создан ряд новых и информативных визуальных эффектов и текстовых потоков и обмена сообществом Football Data Analytics через Twitter (@_JKDS_).
Чтобы поддержать других, которые хотят развить свои навыки анализа данных в контексте футбольных данных, я создал руководство по началу работы.
Дерево ниже (нажмите на раскрытие, чтобы развернуть) представляет структуру папки этого репозитория GIT. Обратите внимание, что некоторые отдельные файлы опущены с диаграммы для простоты.
football-data-analytics
│
├── analysis_tools
│ ├── __init__.py
│ ├── get_football_data.py [not included in git repo]
│ ├── logos_and_badges.py
│ ├── models.py
│ ├── pitch_zones.py
│ ├── statsbomb_custom_events.py
│ ├── statsbomb_data_engineering.py
│ ├── whoscored_custom_events.py
│ ├── whoscored_data_engineering.py
│ ├── wyscout_data_engineering.py
│
├── data_directory
│ ├── leaguetable_data
│ ├── misc_data
│ │ ├── articles
│ │ ├── images
│ ├── statsbomb_data [contents not included in git repo]
│ ├── transfermarkt_data
│ ├── whoscored_data [contents not included in git repo]
│ ├── wyscout_data
│
├── model_directory
│ ├── pass_cluster_model
│ │ ├── PassClusterModel65.joblib
│ ├── xg_model
│ │ ├── log_regression_xg_model.joblib
│
├── projects
│ ├── 00_data_import_and_misc_work
│ │ ├── download_yt_video.py
│ │ ├── import_data_fbref.py
│ │ ├── import_data_leaguetable.py
│ │ ├── import_data_whoscored.py
│ │ ├── scrape_data_transfermarkt.py
│ │ ├── misc_work
│ ├── 01_wc2018_box2box_mids
│ │ ├── worldcup_b2b_mids.py
│ ├── 02_player_team_valuation
│ │ ├── team_player_value_analysis.py
│ ├── 03_model_development_and_implementation
│ │ ├── pass_cluster_data_collection.py
│ │ ├── shot_xg_plot.py
│ │ ├── xg_log_regression_model.py
│ │ ├── xg_neural_network.py
│ ├── 04_match_reports
│ │ ├── off_def_shape_report_ws.py
│ │ ├── pass_report_ws.py
│ │ ├── shot_report_understat.py
│ ├── 05_competition_reports_top_players
│ │ ├── player_defensive_contribution.py
│ │ ├── player_effective_carriers.py
│ │ ├── player_effective_passers.py
│ │ ├── player_high_defensive_actions.py
│ │ ├── player_impact_on_team.py
│ │ ├── player_penalty_takers.py
│ │ ├── player_threat_creators.py
│ │ ├── player_threat_creators_zonal_comparison.py
│ ├── 06_competition_reports_top_teams
│ │ ├── team_ball_winning.py
│ │ ├── team_common_zonal_actions.py
│ │ ├── team_cross_success.py
│ │ ├── team_delta_threat_creation.py
│ │ ├── team_fullback_combinations.py
│ │ ├── team_setpiece_shot_concession.py
│ │ ├── team_threat_creation.py
│ │ ├── xg_league_table_sb.py
│ ├── 07_player_reports
│ │ ├── advanced_swarm_radar.py
│ │ ├── player_report_fullback.py
│ ├── 08_evolution_of_shooting
│ │ ├── shot_characteristics_trending.py
│ ├── 09_league_position_metric_correlation
│ │ ├── team_metric_pts_correlation.py
│ ├── 10_team_buildup_passes
│ │ ├── team_pass_tendencies.py
│ ├── 11_justice_league
│ │ ├── justice_league.py
│ ├── 99_private_work
│
├── .gitignore
│
├── Getting Started with Football Analytics.md
│
├── LICENSE
│
├── README.md
Как показано в структуре папок выше, репозиторий содержит три ключевых папки:
В общем, каждый проект следует за несколькими логическими шагами:
Проекты пронумерованы на основе численного идентификатора области папки проекта, в которой они были предприняты и хранятся. Десятицы используются, когда в той же области папки было предпринято более одного подпроекта/куки работы. Например, подпроект 2.1 и 2.2 являются двумя отдельными частями работы, которые существуют в рамках проекта 2, которые хранятся в области папки 02_Player_team_valuation_transfermarkt. Выберите заголовок проекта, чтобы расширить раскрытие и узнать больше.
Источник данных: отчеты Statsbomb & FIFA Match
Область проекта: 01_WC2018_box2box_mids
Код: WorldCup_b2b_mids.py
Резюме и выходы: исследование наиболее эффективной коробки для полузащитников на чемпионате мира 2018 года. Ряд индивидуальных метрик используется для оценки центральных полузащитников по победе мяча, удержания мяча и творчества, а также мобильности. Хорошая коробка для полузащитника коробки определяется как центральный полузащитник, который превосходит в каждой из этих областей.
Источник данных: Transfermarkt
Область проекта: 00_data_import_and_misc_work & 02_player_team_valuation
Код: scrape_data_transfermarkt.py & team_player_value_analysis.py
Резюме и выходы: разработка инструмента для сокраснения команды и рыночной информации об рыночной стоимости от Transpermarkt.co.uk. Создание «разведывательного визуального», которое подчеркивает игроков из данной лиги с благоприятной комбинацией возраста и вклада целей по рыночной стоимости. Работа также исследует использование статистических моделей для прогнозирования рыночной стоимости на основе производительности игрока.
Источник данных: Transfermarkt
Область проекта: 00_data_import_and_misc_work & 02_player_team_valuation
Код: scrape_data_transfermarkt.py & team_player_value_analysis.py
Резюме и выходы: разработка инструмента для сокраснения команды и рыночной информации об рыночной стоимости от Transpermarkt.co.uk. Расследование команды под/чрезмерным эффективностью на основе рейтинга лиги и общего рейтинга отряда.
Источник данных: Wyscout
Область проекта: model_directory & 03_model_development_and_implementation
Код: xg_log_regression_model.py, xg_neural_network.py & shot_xg_plot.py
Резюме и вывод: реализация и тестирование основных ожидаемых целей вероятностных моделей. Эта работа включает в себя разработку и сравнение модели ожидаемых логистической регрессии и модели ожидаемых целей нейронной сети, каждая из которых обучила более 40000 выстрелов, сделанных по всей Европе «Большой пять» в течение сезона 2017/2018. Модели используются для расчета ожидаемых целей для конкретных игроков, клубов и лиг в течение определенного периода времени.
Источник данных: Opta
Область проекта: model_directory, 03_model_development_and_implementation и внешнее репо: ml_models_collection
Код: pass_cluster_data_collection.py, models.py, внешнее репо: ml_model.ipynb
Резюме и вывод: используя более 5 000 000+ проходов с лиги «Большой 5» в Европе (Opta Data, 2019/20 - 2022/23), я построил модель кластеризации, которая способна назначить успешные проходы одному из 65 кластеров. Эта работа включает в себя построение конвейера машинного обучения и тестирование различных алгоритмов классификации. Выбранная модель использует AK означает алгоритм кластеризации для назначения проходов, которые я затем упаковал в функцию кластеризации, чтобы поддержать многие из моих проектов футбольной аналитики.
Источник данных: Statsbomb
Область проекта: Analysis_tools
Код: модели.py
Резюме и вывод: реализация метода Монте-Карло для моделирования вероятности отдельных результатов совпадения на основе событий выстрела и связанных с ними ожидаемыми целями (XG). Большое количество (10000+) моделирования выполняется на заданном матче с приблизительной вероятностью победы для каждой команды и рисует вероятность. Ожидаемые баллы в данном матче просто рассчитываются как 3 × win_probability + 1 × drain_proability. Принятый метод зависит от предположения, что XG представляет вероятность оценки, и что отдельные события выстрела являются независимыми.
Источник данных: преуменьшан
Область проекта: 04_match_reports
Код: shot_report_understat.py
Резюме и вывод: разработка сценария для извлечения данных снимка из промысла и генерировать отчеты о выстреле для любого выбранного матча.
Источник данных: Opta/Whoscore
Область проекта: 04_match_reports
Код: pass_report_ws.py
Резюме и вывод: проектирование и разработка алгоритма, который идентифицирует и считает аналогичные проходы на основе области высоты, в которой они начинаются и заканчивают. Генерация отчетов по потоку межзонового прохода для любого выбранного совпадения.
Источник данных: Opta/Whoscore
Область проекта: 04_match_reports
Код: pass_report_ws.py
Резюме и вывод: проектирование и разработка алгоритма для расчета территорий игроков на основе позиций всех действий в игре на протяжении всего матча, включая удаление выбросов. Создание отчетов о форме для любого выбранного совпадения, включая расчет площади территории в качестве прокси для покрытой площади высоты тона.
Источник данных: Opta/Whoscore
Область проекта: 05_competition_reports_top_players
Код: player_defenge_contribution.py
Резюме и выходы: оценка оборонительного вклада всех игроков на время соревнований, с идентификацией лучших игроков по таким показателям, как восстановление и победы в мяч, на 100 оттенков оппозиции. Работа включает в себя имплаентацию диаграммы рассеяния алмаза, которую можно повторно использовать для любого графика 2D рассеяния.
Источник данных: Opta/Whoscore
Область проекта: 05_competition_reports_top_players
Код: player_defenge_contribution.py
Резюме и вывод: оценка количества защитных действий, завершенных в оппозиции третьим, всеми игроками в течение всего срока соревнования, что дает указание на то, кто имеет тенденцию защищаться с фронта.
Источник данных: Opta/Whoscore
Область проекта: 05_competition_reports_top_players
Код: player_effective_passers.py
Резюме и вывод: идентификация эффективных прохожих путем оценки всех проходов в игре, выполненных в течение всего времени конкуренции. Метрики, такие как прогрессивные проходы, кумулятивная ожидаемая угроза и пропускают в ящик для оппозиции на 90, используются для выявления лучших игроков. Эта работа включает в себя реализацию ожидаемой модели угроз, разработанной Каруном Сингхом.
Источник данных: Opta/Whoscore
Область проекта: 05_competition_reports_top_players
Код: player_effective_carriers.py
Резюме и вывод: идентификация эффективных носителей посредством оценки переносов, завершенных в течение всего времени конкуренции. Эта работа включает в себя разработку модуля для вывода событий переноса из данных о событиях OPTA (как не зарегистрированы).
Источник данных: Opta/Whoscore
Область проекта: 05_competition_reports_top_players
Код: player_effective_carriers.py
Резюме и вывод: выявление лучших создателей угроз путем оценки различных событий/действий, выполненных в течение всего времени конкуренции в разных областях поля. Эта работа включает в себя реализацию ожидаемой модели угроз, разработанной Каруном Сингхом.
Источник данных: Opta/Whoscore
Область проекта: 05_competition_reports_top_players
Код: player_threat_creators.py
Резюме и выходы: идентификация лучших штрафных участников на нескольких соревнованиях. Качество штрафа оценивается на мое среднее расстояние от штрафа на гошницу от вратаря Мидриффа, а наказание за нецелевые штрафы-на расстоянии нулевое расстояние. Эта работа включает в себя реализацию «3D -прогнозов» в 2D -сюжетах.
Источник данных: Opta/Whoscore
Область проекта: 05_competition_reports_top_players
Код: player_impact_on_team.py
Резюме и выходы: определение того, как команда, ожидаемая угроза, ожидаемая команда, ожидаемая разница в угрозе и т. Д.
Источник данных: Opta/Whoscore
Область проекта: 06_competition_reports_top_teams
Код: team_threat_creation.py
Резюме и выходы: рейтинг команд по полной угрозе, созданный в результате проходов и переносится на 90, включая идентификацию зон, в которых каждая команда генерирует угрозу.
Источник данных: Opta/Whoscore
Область проекта: 06_competition_reports_top_teams
Код: team_ball_winning.py
Резюме и выходы: рейтинг команд по средней высоте вверх по поле, который они выигрывают мяч, включая идентификацию зон, в которых они получают мяч от оппозиции.
Источник данных: Opta/Whoscore
Область проекта: 06_competition_reports_top_teams
Код: team_cross_success.py
Резюме и выходы: рейтинг команд по уровню успеха в игре. Эта работа включает в себя пользовательское определение эффективного (или успешного) креста, где эффективный крест - это тот, за которым следует либо выстрел, либо ключ в течение 5 секунд после игры (независимо от исхода с перекрестного перекрестка).
Источник данных: Opta/Whoscore
Область проекта: 06_competition_reports_top_teams
Код: team_fullback_combinations.py
Резюме и вывод: рейтинг команд по частоте, в которой их полные спины объединяются. Проходы между защитниками каждой команды идентифицируются и выделяются на основе того, приводит ли проход к выстрелу по воротам.
Источник данных: Opta/Whoscore
Область проекта: 06_competition_reports_top_teams
Код: team_delta_threat_creation.py
Резюме и выходы: рейтинг команд путем улучшения общей угрозы, созданного в результате проходов и переносится в игре на 90 - текущий сезон против прошлого сезона. Включает в себя бухгалтерский учет для команд, которые были в дивизионе выше или ниже в предыдущем году. Изменение создания угроз также разбивается в зоне высоты тона
Источник данных: Opta/Whoscore
Область проекта: 06_competition_reports_top_teams
Код: team_setpeece_shot_concession.py
Резюме и выходы: исследование способности команды защищать наборные части посредством агрегирующих шансов, уступивших в течение 5 секунд от оппозиции «косвенной» серии. «Косвенные» наборные элементы относятся к угловым и штрафным ударам, где мяч остается в игре после того, как сет-штука взята, поэтому из анализа исключаются нецелевые штрафные удары и прямые цели из сетевых элементов.
Источник данных: Statsbomb
Область проекта: 06_competition_reports_top_teams
Код: xg_league_table_sb.py
Резюме и результаты: генерация различных рейтингов таблицы лиги на основе XG, XG Performance, Ration XG/XT и различных других показателей.
Источник данных: Opta/Whoscore
Область проекта: 07_Player_Reports
Код: player_report_fullback.py
Резюме и выходы: проигрыватель отчет, специфичный для защитников, включая разработку гибкого/надежного механизма, чтобы сравнить отчет с аналогичными игроками, а затем оценить набор игроков против всех защитников в избранной лиге.
Источник данных: Opta/Whoscore
Область проекта: 07_Player_Reports
Код: advanced_swarm_radar.py
Резюме и вывод: разработка новых и инновационных средств визуализации производительности игроков. Радар «рой» может быстро профилировать, оценивать и сравнивать игроков, но также дает более глубокий контекст через Difplauomg распределения показателей метрических показателей среди игроков сравнения.
Источник данных: Opta/Whoscore
Область проекта: 08_evolution_of_shooting
Код: shot_characteristics_trending.py
Резюме и выходы: произведение работы, заключенное в Ассоциации профессионального футбольного анализа (APFA), исследуя, как искусство стрельбы меняется в футболе и дает представление о эволюции стрельбы в Премьер -лиге.
APFA - Эволюция съемки в веб -статье Премьер -лиги
APFA - Эволюция стрельбы в Премьер -лиге.pdf
Источник данных: Opta/Whoscore
Область проекта: 09_League_position_metric_correlation
Код: team_metrics_pts_correlation.py
Резюме и вывод: предварительная работа по определению характеристик успешных команд в определенных лигах. Исследование того, насколько сильно ряд метриков команды коррелирует с точками, накопленными за сезон, используя данные из 5+ сезонов. Вывод из этого проекта был включен в видео Tifo - почему Эвертон лучше, чем вы думаете.
Источник данных: Opta/Whoscore
Область проекта: 10_TEAM_BUILDUP_PASSES
Код: team_pass_tendencies.py
Резюме и вывод: эксплуатация предыдущей работы по кластеризации проходов для выявления прохождения тенденций команд в наращивании. Эти иналивы, смотрящие на общие кластеры проходов в течение первых 6 проходов, которые команда делает в различных областях поля.
Источник данных: Statsbomb
Область проекта: 11_justice_League
Код: правосудие_лига.py
Резюме и вывод: эксплуатация предыдущей работы по моделированию очков для моделирования полного сезона матчей и переосмысления таблицы лиги, основанных на вероятного результата совпадения (или ожидаемых очков).