'"Provides Combines multiple models using bagging, boosting, stacking
Scanned 9/4/2026
Install to Claude Code
npx -y skills add paulpas/agent-skill-router --skill ds-ensemble-methods --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ds Ensemble Methods?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/paulpas-ds-ensemble-methods)More formats (shields.io, HTML) on the badges page.
---
name: ds-ensemble-methods
compatibility: opencode
completeness: 95
content-types:
- code
- guidance
- do-dont
- examples
description: '"Provides Combines multiple models using bagging, boosting, stacking
voting, and blending for improved predictive performance and robustness"'
license: MIT
maturity: stable
metadata:
domain: coding
output-format: code
related-skills: ds-model-selection, ds-neural-networks, ds-tree-methods
role: implementation
scope: implementation
triggers: ensemble methods, bagging, boosting, stacking, voting, blending, ensemble
learning
archetypes:
- tactical
- generation
anti_triggers:
- brainstorming
- vague ideation
- code golf
- over-engineering
response_profile:
verbosity: low
directive_strength: high
abstraction_level: operational
version: "1.0.0"
---
# Ensemble Methods
Comprehensive guide to ensemble methods in machine learning and data science workflows.
## When to Use This Skill
- Solving real-world supervised learning problems
- Building machine learning pipelines with ensemble methods
- Implementing best practices for ensemble methods
- Optimizing model performance using ensemble methods techniques
- Learning industry-standard approaches to ensemble methods
## When NOT to Use This Skill
- When using pre-built libraries without understanding underlying concepts
- For toy problems that don't require ensemble methods rigor
- When domain expertise in specific problem requires different approach
- If your problem doesn't require the complexity this skill provides
## Purpose and Key Concepts
Ensemble Methods is a critical component of the machine learning workflow. This skill covers:
1. **Theoretical foundations** — Mathematical principles and statistical concepts
2. **Practical implementation** — Working code examples and patterns
3. **Common pitfalls** — Mistakes to avoid and how to recover from them
4. **Best practices** — Industry-standard approaches and optimization techniques
## Core Workflow
1. **Understand the problem** — Clearly define what you're solving for
2. **Select approach** — Choose the right technique for your data and constraints
3. **Implement solution** — Write clean, tested code following best practices
4. **Validate results** — Verify your implementation with tests and validation
5. **Optimize performance** — Improve efficiency and accuracy incrementally
## Implementation Patterns
### Pattern 1: Basic Ensemble Methods
```python
# BAD: Hardcoded hyperparameters, no validation, data leakage risk
# from sklearn.ensemble import RandomForestClassifier
# rf = RandomForestClassifier(n_estimators=100)
# rf.fit(X, y)
# print(rf.score(X, y)) # Evaluating on training data violates KISS principle
# GOOD: Follows DRY/SOLID principles, proper train/test split, cross-validation, type hints
import pandas as pd
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.ensemble import VotingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from typing import Dict, Any, Tuple
def train_basic_ensemble(X: np.ndarray, y: np.ndarray) -> Dict[str, Any]:
"""Train a voting ensemble with proper validation."""
if X.shape[0] != y.shape[0]:
raise ValueError("Feature and target dimensions must match")
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
base_estimators = [
('logreg', LogisticRegression(random_state=42, max_iter=1000))
('dt', DecisionTreeClassifier(random_state=42))
]
ensemble = VotingClassifier(estimators=base_estimators, voting='soft')
cv_scores = cross_val_score(ensemble, X_train, y_train, cv=5, scoring='accuracy')
ensemble.fit(X_train, y_train)
return {
'test_accuracy': accuracy_score(y_test, ensemble.predict(X_test))
'cv_mean': float(cv_scores.mean())
'cv_std': float(cv_scores.std())
}
# Usage
X, y = make_classification(n_samples=800, n_features=8, n_classes=2, random_state=42)
results = train_basic_ensemble(X, y)
print(f"Test Accuracy: {results['test_accuracy']:.4f} | CV: {results['cv_mean']:.4f} ± {results['cv_std']:.4f}")
```
### Pattern 2: Production-Ready Ensemble Methods
```python
import logging
import pandas as pd
import numpy as np
from typing import Any, Dict, List
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, StratifiedKFold
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier, StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, f1_score
from sklearn.base import BaseEstimator, ClassifierMixin
logger = logging.getLogger(__name__)
class EnsembleMethods:
"""Production implementation of Ensemble Methods following SOLID principles."""
def __init__(self, n_estimators: int = 100, random_state: int = 42) -> None:
self.n_estimators = n_estimators
self.random_state = random_state
self.models: Dict[str, Any] = {}
self.metrics: Dict[str, float] = {}
def execute(self, data: pd.DataFrame, target_col: str) -> Dict[str, Any]:
"""Execute Ensemble Methods on data with full validation."""
if target_col not in data.columns:
raise ValueError(f"Target column '{target_col}' not found in data")
X = data.drop(columns=[target_col])
y = data[target_col]
if X.isnull().any().any():
raise ValueError("Input data contains missing values")
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=self.random_state, stratify=y
)
base_ests = [
('rf', RandomForestClassifier(n_estimators=self.n_estimators, random_state=self.random_state))
('gb', GradientBoostingClassifier(n_estimators=self.n_estimators, random_state=self.random_state))
]
meta_ests = LogisticRegression(random_state=self.random_state, max_iter=1000)
stack_clf = StackingClassifier(estimators=base_ests, final_estimator=meta_ests, cv=5)
stack_clf.fit(X_train, y_train)
y_pred = stack_clf.predict(X_test)
self.metrics = {
'accuracy': float(accuracy_score(y_test, y_pred))
'f1_score': float(f1_score(y_test, y_pred, average='weighted'))
}
logger.info(f"Ensemble training complete. Accuracy: {self.metrics['accuracy']:.4f}")
return {
'status': 'success'
'metrics': self.metrics
'predictions': y_pred.tolist()
'model_type': 'StackingClassifier'
}
```
## Best Practices
- ✅ Always validate your implementation on test data
- ✅ Document your assumptions and methodology
- ✅ Use version control for reproducibility
- ✅ Monitor performance metrics in production
- ✅ Periodically review and update your approach
- ✅ Test with edge cases and outliers
- ✅ Log all significant operations for debugging
## Common Pitfalls
| Pitfall | Problem | Solution |
|
---
---
## Constraints
### MUST DO
- Combine diverse base models (linear, tree-based, neural) rather than similar architectures for better ensemble diversity
- Use out-of-fold predictions (stacking) instead of training-set predictions to prevent overfitting in meta-model
- Validate feature importance consistency across individual trees in Random Forest and XGBoost
- Report performance at multiple granularity levels: overall metrics, per-class metrics, and calibration curves
### MUST NOT DO
- Do not ensemble models trained on the same data splits without addressing leakage between training stages
- Avoid using more than 5-10 base models in stacking — complexity increases faster than gains
- Never use greedy forward selection of base learners without a validation-set guardrail
- Do not ignore class imbalance when ensembling — ensure each base model handles it appropriately
## Live References
> Authoritative documentation links for this skill's domain. The model follows markdown links at load time to resolve external references and inline content.
- [Scikit-learn Ensemble Methods](https://scikit-learn.org/stable/modules/ensemble.html)
- [Random Forest — Scikit-learn docs](https://scikit-learn.org/stable/modules/ensemble.html#random-forests)
- [Gradient Boosting — XGBoost documentation](https://xgboost.readthedocs.io/)
- [Stacking Classifiers (Scikit-learn)](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.StackingClassifier.html)
- [Ensemble Learning Survey (Schapire)](https://www.cs.princeton.edu/courses/archive/fall02/cs498/lectures/enhancing_boosting.pdf)Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!