What's Changed
- Added EFPI (Elastic Formation and Position Identification) as discussed in EFPI: Elastic Formation and Position Identification in Football (Soccer) using Template Matching and Linear Assignment (Bekkers, 2025)
Basic Functionality:
from unravel.soccer import EFPI
model = EFPI(dataset=kloppy_polars_dataset)
model.fit(
# Default 65 formations , or specify a subset (e.g. ["442" , "433"])
formations=None,
# specific time intervals (e.g. 1m, 1m14s, 2m30s etc.), or specify "possession", "period" or "frame".
every="5m",
substitutions="drop",
change_threshold=0.1,
change_after_possession=True,
)