pipeline
pipeline
¶
Per-player inference pipeline orchestrator.
This is the single entry point that FPLModel.fit() calls for each player. It coordinates HMM, Kalman Filter, signal injection, and fusion.
Usage: pipeline = PlayerInferencePipeline() pipeline.ingest_observations(points_array) pipeline.inject_news("Player ruled out for 3 weeks", timestep=20) pipeline.inject_fixture_difficulty(difficulty=4.5, timestep=21) results = pipeline.run() ep_mean, ep_var = pipeline.predict_next()
InferenceResult
dataclass
¶
InferenceResult(
filtered_beliefs: ndarray,
smoothed_beliefs: ndarray,
viterbi_path: ndarray,
hmm_predicted_mean: float = 0.0,
hmm_predicted_var: float = 0.0,
kalman_filtered: ndarray = (lambda: array([]))(),
kalman_uncertainty: ndarray = (lambda: array([]))(),
kf_predicted_mean: float = 0.0,
kf_predicted_var: float = 0.0,
fused_mean: ndarray = (lambda: array([]))(),
fused_var: ndarray = (lambda: array([]))(),
fusion_alpha: Optional[float] = None,
predicted_mean: float = 0.0,
predicted_var: float = 0.0,
)
Container for inference pipeline outputs.
PlayerInferencePipeline
¶
PlayerInferencePipeline(
hmm_params: Optional[dict] = None,
kf_params: Optional[dict] = None,
hmm_variance_floor: float = 1.0,
news_params: Optional[dict] = None,
fusion_mode: str = "precision",
fusion_params: Optional[dict] = None,
)
Orchestrates HMM + Kalman inference for a single player.
| PARAMETER | DESCRIPTION |
|---|---|
hmm_params
|
Override HMM parameters: transition_matrix, emission_params, initial_dist.
TYPE:
|
kf_params
|
Override Kalman parameters: Q, R, x0, P0.
TYPE:
|
Source code in fplx/inference/pipeline.py
ingest_observations
¶
Set the player's historical points sequence.
| PARAMETER | DESCRIPTION |
|---|---|
points
|
Weekly points history.
TYPE:
|
Source code in fplx/inference/pipeline.py
inject_news
¶
Inject a news signal into the inference at a specific gameweek.
Bridges from existing NewsSignal.generate_signal() output format.
| PARAMETER | DESCRIPTION |
|---|---|
news_signal
|
Output from NewsSignal.generate_signal(). Must contain: 'availability', 'minutes_risk', 'confidence'.
TYPE:
|
timestep
|
The gameweek index to apply the perturbation.
TYPE:
|
Source code in fplx/inference/pipeline.py
inject_fixture_difficulty
¶
Inject fixture difficulty into Kalman observation noise.
| PARAMETER | DESCRIPTION |
|---|---|
difficulty
|
Fixture difficulty score (1-5, from FixtureSignal).
TYPE:
|
timestep
|
The gameweek index.
TYPE:
|
Source code in fplx/inference/pipeline.py
run
¶
run() -> InferenceResult
Run full inference pipeline: HMM + Kalman + Fusion.
| RETURNS | DESCRIPTION |
|---|---|
InferenceResult
|
All inference outputs. |
Source code in fplx/inference/pipeline.py
predict_next
¶
Get the fused one-step-ahead forecast.
| RETURNS | DESCRIPTION |
|---|---|
expected_points
|
TYPE:
|
variance
|
TYPE:
|
Source code in fplx/inference/pipeline.py
learn_parameters
¶
Run Baum-Welch to learn HMM parameters from current observations.
Call this before run() if you want data-driven parameters.