이 저장소에는 축구 데이터의 효과적인 분석 및 시각화를 가능하게하는 도구, 프로젝트 및 리소스 모음이 포함되어 있습니다.
이 저장소에는 축구 데이터의 의미있는 통찰력 생성을 지원하는 도구, 프로젝트 및 리소스 모음이 포함되어 있습니다. Python은 이벤트 데이터, 집계 팀 데이터, 시장 가치 데이터 등의 추출, 처리, 분석 및 시각화에 사용됩니다.
이 저장소는 뮤트 프로젝트 및 하위 프로젝트로 분류되며, 각각은 상세한 분석을 수행하거나 특정 통찰력을 생성하거나 축구 데이터 분석에 일정 수준의 자동화를 도입하는 것을 목표로합니다. 이 저장소의 내용을 사용하여 트위터 (@_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 매치 보고서
프로젝트 영역 : 01_WC2018_box2box_mids
코드 : WorldCup_B2B_MIDS.PY
요약 및 출력 : 2018 월드컵에서 가장 효과적인 상자에 대한 박스 미드 필더에 대한 조사. 많은 맞춤형 메트릭은 볼 승리, 볼 보유 및 창의성 및 이동성에서 중앙 미드 필더를 득점하는 데 사용됩니다. 좋은 상자 대 박스 미드 필더는 각 영역에서 탁월한 중앙 미드 필더로 정의됩니다.
데이터 출처 : TransferMarkt
프로젝트 영역 : 00_DATA_IMPORT_AND_MISC_WORK & 02_PLAYER_TEAM_VALUTION
코드 : scrape_data_transfermarkt.py & team_player_value_analysis.py
요약 및 출력 : TransferMarkt.co.uk에서 팀 및 플레이어 시장 가치 정보를 긁는 도구 개발. 시장 가치에 따라 연령과 목표 기여가 유리한 조합으로 주어진 리그의 플레이어를 강조하는 "스카우트 비주얼"의 생성. 이 작업은 또한 플레이어 성능에 따라 시장 가치를 예측하기 위해 통계 모델의 사용을 탐구합니다.
데이터 출처 : TransferMarkt
프로젝트 영역 : 00_DATA_IMPORT_AND_MISC_WORK & 02_PLAYER_TEAM_VALUTION
코드 : scrape_data_transfermarkt.py & team_player_value_analysis.py
요약 및 출력 : TransferMarkt.co.uk에서 팀 및 플레이어 시장 가치 정보를 긁는 도구 개발. 리그 순위 및 총 분대 가치 순위를 기반으로 한 팀 미만/과잉 성능의 조사.
데이터 출처 : Wyscout
프로젝트 영역 : model_directory & 03_model_development_and_implementation
코드 : xg_log_regression_model.py, xg_neural_network.py & shot_xg_plot.py
요약 및 출력 : 기본 예상 목표 확률 모델의 구현 및 테스트. 이 작업에는 로지스틱 회귀 예상 목표 모델과 신경망 예상 목표 모델의 개발 및 비교가 포함되며, 각각 2017/2018 시즌 동안 유럽의 'Big Five'리그에서 40000 개가 넘는 샷을 훈련했습니다. 이 모델은 정의 된 기간 동안 특정 플레이어, 클럽 및 리그의 예상 목표를 계산하는 데 사용됩니다.
데이터 출처 : OPTA
프로젝트 영역 : Model_Directory, 03_Model_Development_and_implementation & 외부 리포 : ML_MODELS_COLLETION
코드 : pass_cluster_data_collection.py, models.py, external repo : ml_model.ipynb
요약 및 출력 : 유럽의 "Big 5"리그 (Opta Data, 2019/20-2022/23)와 함께 5,000,000+ 패스를 사용하여 65 개의 클러스터 중 하나에 성공적인 패스를 할당 할 수있는 클러스터링 모델을 구성했습니다. 이 작업에는 기계 학습 파이프 라인 구성 및 다양한 분류 알고리즘 테스트가 포함됩니다. 선택한 모델은 AK를 사용하여 클러스터링 알고리즘을 사용하여 패스를 할당 한 다음 클러스터링 기능 내에서 포장하여 많은 축구 분석 프로젝트를 지원했습니다.
데이터 출처 : Statsbomb
프로젝트 영역 : Analysis_Tools
코드 : models.py
요약 및 출력 : 샷 이벤트 및 관련 예상 목표 (XG)를 기반으로 개별 경기 결과의 확률을 모델링하기위한 Monte-Carlo 방법의 구현. 주어진 경기에서 많은 수 (10000+)의 시뮬레이션이 실행되어 각 팀의 대략적인 승리 확률을 얻고 확률을 끌어냅니다. 주어진 일치에서 예상 포인트는 간단히 3 × win_probability + 1 × draw_proability로 계산됩니다. 채택 된 방법은 XG가 점수 확률을 나타내고 개별 샷 이벤트가 독립적이라는 가정에 의존합니다.
데이터 출처 : 과소시
프로젝트 영역 : 04_match_reports
코드 : shot_report_understat.py
요약 및 출력 : 스크립트 개발 스크립트의 개발 및 샷 데이터를 추출하고 선택한 일치에 대한 샷 보고서를 생성합니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 04_match_reports
코드 : pass_report_ws.py
요약 및 출력 : 시작 및 마무리 피치의 영역에 따라 유사한 패스를 식별하고 계산하는 알고리즘의 설계 및 개발. 선택한 일치에 대한 구역 간 통과 흐름 보고서 생성.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 04_match_reports
코드 : pass_report_ws.py
요약 및 출력 : 특이 치 제거를 포함하여 경기 전반에 걸쳐 모든 플레이 내 동작의 위치를 기반으로 플레이어 영토를 계산하는 알고리즘의 설계 및 개발. 피치 영역에 대한 대리인으로 영토 영역을 계산하는 것을 포함하여 선택된 경기에 대한 모양 생성 보고서.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 05_competition_reports_top_players
코드 : player_defencial_contribution.py
요약 및 생산량 : 경쟁 기간 동안 모든 플레이어의 방어 기여도 평가, 100 회 반대 터치 당 회수 및 볼 승리와 같은 메트릭스에 의한 최고의 플레이어를 식별합니다. 작업에는 2D 산점도에 대해 재사용 할 수있는 다이아몬드 산점도 다이어그램이 포함됩니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 05_competition_reports_top_players
코드 : player_defencial_contribution.py
요약 및 생산량 : 경쟁 기간 동안 모든 플레이어의 세 번째에 의해 야당에서 완료된 방어 행동의 수 평가로, 누가 전면에서 방어하는 경향이 있는지 알 수 있습니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 05_competition_reports_top_players
코드 : player_effective_passers.py
요약 및 생산량 : 경쟁 기간 동안 완료된 모든 플레이 내 패스의 평가를 통해 효과적인 통행인의 식별. 진보적 인 패스, 누적 예상 위협 및 90 당 야당 상자와 같은 메트릭은 최고 플레이어를 식별하는 데 사용됩니다. 이 작업에는 Karun Singh이 개발 한 예상되는 위협 모델의 구현이 포함됩니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 05_competition_reports_top_players
코드 : player_effective_carriers.py
요약 및 생산량 : 경쟁 기간 동안 완료된 운송 업체 평가를 통한 효과적인 운송 업체의 식별. 이 작업에는 OPTA 이벤트 데이터의 캐리 이벤트를 추론하기위한 모듈의 개발이 포함됩니다 (캐리가 기록되지 않음).
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 05_competition_reports_top_players
코드 : player_effective_carriers.py
요약 및 출력 : 피치의 다른 영역 내에서 경쟁 기간 동안 완료된 다양한 이벤트/행동의 평가를 통해 최고 위협 제작자의 식별. 이 작업에는 Karun Singh이 개발 한 예상되는 위협 모델의 구현이 포함됩니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 05_competition_reports_top_players
코드 : player_threat_creators.py
요약 및 생산량 : 여러 대회에서 최고의 페널티 테이커 식별. 페널티 품질은 골키퍼 미들 리프의 평균 표적 페널티 거리는 평가되지 않으며, 대상 이외의 벌금은 0의 거리를 할당했습니다. 이 작업에는 2D 서브 플로트 내에서 "3D 투영"구현이 포함됩니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 05_competition_reports_top_players
코드 : player_impact_on_team.py
요약 및 출력 : 팀의 Aggregreated Metrics (팀 예상 위협, 팀 예상 위협이 인정, 팀 예상 위협 차이 등)의 결정은 특정 플레이어가 경기장에있을 때 비율이 다릅니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 06_competition_reports_top_teams
코드 : team_threat_creation.py
요약 및 생산량 : 각 팀이 위협을 생성하는 구역의 식별을 포함하여 90 명당 운반 및 운반을 통해 생성 된 총 위협에 의한 팀 순위.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 06_competition_reports_top_teams
코드 : team_ball_winning.py
요약 및 출력 : 팀의 순위는 평균 높이에 의해 야당에서 공을 소유하는 구역의 식별을 포함하여 공을 되 찾는 피치를 상승시킵니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 06_competition_reports_top_teams
코드 : team_cross_success.py
요약 및 출력 : 플레이 내 교차 성공률에 따른 팀의 순위. 이 작업에는 효과적인 (또는 성공적인) 십자가의 사용자 정의가 포함되어 있으며, 효과적인 십자가는 5 초 이내에 샷 또는 키 패스가 이어지는 (Inital Cross 결과에 관계없이)입니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 06_competition_reports_top_teams
코드 : team_fullback_combinations.py
요약 및 출력 : 전체 등이 결합되는 빈도 별 팀의 순위. 각 팀의 풀백 사이의 패스는 패스가 목표를 달성하는지 여부에 따라 식별되고 강조됩니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 06_competition_reports_top_teams
코드 : team_delta_threat_creation.py
요약 및 생산량 : 90 시즌 대 지난 시즌에 따라 플레이 내 패스 및 운반을 통해 생성 된 총 위협의 개선으로 팀의 순위. 전년도에 위 또는 아래에있는 팀에 대한 회계가 포함됩니다. 위협 생성의 변화는 피치 구역에 의해 분해됩니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 06_competition_reports_top_teams
코드 : team_setpiece_shot_concession.py
요약 및 출력 : 야당 "간접"세트 피스의 5 초 이내에 인정 된 집계 기회를 통해 팀의 세트 피스를 방어 할 수있는 팀의 능력에 대한 조사. "간접"세트 피스는 세트 피스가 채취 된 후 공이 남아있는 코너와 프리킥을 나타냅니다. 따라서 표적외 프리킥과 세트 피스의 직접 목표는 분석에서 제외됩니다.
데이터 출처 : Statsbomb
프로젝트 영역 : 06_competition_reports_top_teams
코드 : XG_LEAGUE_TABLE_SB.PY
요약 및 출력 : 팀의 XG, XG 성능, XG/XT 배급 및 기타 다양한 메트릭을 기반으로 다양한 리그 테이블 순위 생성.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 07_Player_Reports
코드 : player_report_fullback.py
요약 및 출력 : 플레이어 보고서는 유연한/강력한 메커니즘 개발을 포함하여 풀백에 맞는 보고서를 비슷한 플레이어와 비교 한 다음 선택한 리그 내에서 모든 풀백에 비해 플레이어 세트를 순위를 매 깁니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 07_Player_Reports
코드 : advanced_swarm_radar.py
요약 및 출력 : 플레이어 성능을 시각화하는 새로운 혁신적인 수단의 개발. "Swarm"레이더는 플레이어 풀 사이의 메트릭 점수 분포를 DispaUomg를 통해 신속하게 프로파일 링, 평가 및 비교할 수 있습니다.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 08_Evolution_of_shooting
코드 : shot_characteristics_trending.py
요약 및 생산량 : APFA (Association of Professional Football Analysis)가 계약 한 작품, 촬영 예술이 축구에서 어떻게 변하고 프리미어 리그에서 총격 사건의 진화에 대한 통찰력을 제공합니다.
APFA- 프리미어 리그 웹 기사에서 촬영의 진화
APFA- 프리미어 리그에서 촬영의 진화 .pdf
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 09_League_Position_Metric_correlation
코드 : team_metrics_pts_correlation.py
요약 및 생산량 : 특정 리그에서 성공적인 팀의 특성을 식별하기위한 탐색 작업. 5 개 이상의 계절의 데이터를 사용하여 계절에 누적 된 포인트와 얼마나 강력하게 관련된지에 대한 조사. 이 프로젝트의 출력은 TIFO 비디오에 포함되었습니다. Everton이 생각보다 더 나은 이유.
데이터 출처 : OPTA/Whoscored
프로젝트 영역 : 10_team_buildup_passes
코드 : team_pass_tendencies.py
요약 및 출력 : Build Up에서 팀의 통과 경향을 식별하기위한 패스 클러스터링에 대한 이전 작업의 악용. 이 inolves는 팀이 피치의 다양한 영역에서 만드는 첫 6 개의 패스에 대한 일반적인 패스 클러스터를보고 있습니다.
데이터 출처 : Statsbomb
프로젝트 영역 : 11_Justice_League
코드 : Justice_League.py
요약 및 출력 : 프로 블리스 매치 결과 (또는 예상 포인트)를 기반으로 한 시즌의 경기를 시뮬레이션하고 리그 테이블 순위를 다시 생성하기위한 포인트 모델링에 대한 이전 작업의 악용.