A state-of-the-art machine learning system that predicts Survivor season winners using an ensemble approach trained on 48 seasons of historical data. The model achieves 91.7% accuracy on winner predictions across Seasons 1-48.
The model was validated on all past seasons (S1-S48) with impressive accuracy:
| Metric | Accuracy | Seasons Correct |
|---|---|---|
| Winner | 91.7% | 44/48 seasons |
| Top 2 | 91.7% | 44/48 seasons |
| Top 3 | 79.2% | 38/48 seasons |
| Top 4 | 81.2% | 39/48 seasons |
| Top 5 | 89.6% | 43/48 seasons |
| Rank | Name | Probability | Confidence |
|---|---|---|---|
| 🥇 1 | Savannah | 35.89% | High |
| 🥈 2 | Rizo | 22.85% | Moderate |
| 🥉 3 | Sage | 18.40% | Moderate |
| 4 | Sophi | 16.77% | Moderate |
| 5 | Kristina | 6.10% | Low |
The Season 49 finale aired on December 17, 2025. Here are the actual results compared to model predictions:
| Actual Place | Contestant | How They Finished | Predicted Rank | Jury Votes |
|---|---|---|---|---|
| 🥇 1st (Winner) | Savannah Louie | Won 5-2-1 jury vote | 1st ✅ | 5 |
| 🥈 2nd | Sophi Balerdi | Runner-up; won final immunity | 4th | 2 |
| 🥉 3rd | Sage Ahrens-Nichols | Taken to FTC by Sophi | 3rd | 1 |
| 4th | Rizo Velovic | Lost fire-making to Savannah | 2nd | — |
| 5th | Kristina Mills | Voted out 4-1 at F5 | 5th ✅ | — |
- Savannah won her record-tying 4th individual immunity at F5, sending Kristina to the jury
- Sophi won the final immunity challenge and chose to take Sage to the Final 3
- Savannah beat Rizo in the fire-making challenge to earn the last Final 3 spot
- The season featured the first all-female Final 3 since San Juan del Sur (S29)
- ✅ Winner prediction: CORRECT — Savannah was the model's #1 pick at 35.89%
- ✅ 5th place: CORRECT — Kristina correctly predicted as the weakest finalist
- ✅ Top 3 contestants: 2 of 3 correct — Savannah and Sage were in both predicted and actual top 3
- ❌ Rizo vs. Sophi swap — Model ranked Rizo 2nd and Sophi 4th; actual placements were reversed (Sophi 2nd, Rizo 4th)
The model correctly predicted Savannah as the Sole Survivor of Season 49, extending its winner accuracy to 93.9% (45/49 seasons).
- 7-Seed Ensemble for maximum stability and robustness
- 28 Total Models: 4 models per seed (2 Neural Networks + 2 XGBoost classifiers)
- Dual Training Strategy:
- Model 1 (40% weight): Winner-focused training with emphasis on winner vs. non-winner distinctions
- Model 2 (60% weight): Full ranking training capturing all placement relationships
- Architecture: 512-256-256-128 hidden layers
- Activation: ReLU
- Solver: Adam optimizer
- Iterations: 3,000 per model
- Regularization: L2 regularization (alpha=0.0001)
- Trees: 8,000 estimators per model
- Depth: 12 maximum depth
- Learning Rate: 0.005
- Regularization: L1=0.2, L2=0.2
- Sampling: 90% subsample, 90% column sampling
The model uses 8 carefully engineered features derived from contestant data:
| Feature | Description | Source |
|---|---|---|
conf_zscore |
Confessional count z-score within season | Confessional data |
conf_percentile |
Confessional percentile rank | Confessional data |
tribal_sigmoid |
Tribal council participation score | Tribal attendance |
vote_sigmoid |
Vote safety/threat assessment | Vote history |
survival_rate |
Votes received vs. tribals attended ratio | Vote/tribal data |
winner_profile_1 |
Composite winner signal | Multi-feature blend |
jury_appeal |
Estimated jury likability | Derived metric |
consistent_edit |
Stable confessional trajectory | Temporal analysis |
survivor49_git/
├── predict_winner.py # Main model implementation
├── submission.csv # Season 49 predictions output
├── requirements.txt # Python dependencies
├── README.md # This file
├── CURRENT_MODEL_DETAILS.md # Detailed technical specifications
└── .gitignore # Git ignore rules
- Python 3.8 or higher
- pip package manager
# Clone the repository
git clone <repository-url>
cd survivor49_git
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the model
python3 predict_winner.pyThe script will:
- Load historical Survivor data (S1-S48)
- Engineer features and train the ensemble
- Validate on historical data
- Generate Season 49 predictions
- Save results to
submission.csv
Utilizes the survivorpy package for:
- Contestant information and placement data
- Confessional count tracking
- Tribal council attendance
- Vote history and patterns
- Pairwise Comparison Training: Models learn to compare contestants directly
- Temporal Weighting: Recent seasons weighted more heavily
- Importance Weighting: Winner predictions weighted more than placement predictions
- Ensemble Averaging: 7 different random seeds ensure stability
- Leave-One-Season-Out: Each season predicted using models trained on all other seasons
- Comprehensive Metrics: Tracks accuracy across top-1 through top-5 predictions
- Conservative Evaluation: Only exact matches counted as correct
The model demonstrates exceptional performance with:
- Consistency: 91.7% winner accuracy maintained across diverse seasons
- Robustness: Strong performance on both old-school and modern seasons
- Reliability: Ensemble approach minimizes variance in predictions
pandas>=2.0.0- Data manipulation and analysisnumpy>=1.24.0- Numerical computingscikit-learn>=1.3.0- Machine learning algorithmsxgboost>=2.0.0- Gradient boosting frameworksurvivorpy>=0.1.0- Survivor data access
This project is licensed under the MIT License.
Note: This model is for entertainment and analytical purposes. Survivor outcomes depend on many factors beyond statistical modeling, including social dynamics, strategic gameplay, and unpredictable events.