Implementation:Online ml River Ensemble VotingClassifier
| Knowledge Sources | |
|---|---|
| Domains | Online_Learning, Ensemble_Methods, Voting |
| Last Updated | 2026-02-08 16:00 GMT |
Overview
Voting classifier aggregates predictions from multiple classifiers using either probability-weighted or uniform voting for robust ensemble decisions.
Description
This simple yet effective ensemble trains multiple classifiers in parallel and combines their predictions through voting. With use_probabilities=True (default), each classifier's prediction is weighted by its confidence (probability), and votes are summed across all models. With use_probabilities=False, each prediction counts equally regardless of confidence. Probabilities are automatically normalized to ensure they sum to 1.0. All base classifiers are updated with each training instance.
Usage
Use voting when you want a straightforward ensemble without the complexity of stacking or boosting. Probability-weighted voting (default) is generally better as it accounts for model confidence. Use uniform voting when all models should have equal influence or when probability calibration is poor. Ensure you use an odd number of classifiers with uniform voting to avoid ties, though the implementation handles ties by picking randomly.
Code Reference
Source Location
- Repository: Online_ml_River
- File: river/ensemble/voting.py
Signature
class VotingClassifier(base.Classifier, base.Ensemble):
def __init__(self, models: list[base.Classifier], use_probabilities=True):
super().__init__(models)
self.use_probabilities = use_probabilities
Import
from river import ensemble
I/O Contract
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| models | list[Classifier] | required | Classifiers to combine |
| use_probabilities | bool | True | Weight votes by probability |
Attributes
| Attribute | Type | Description |
|---|---|---|
| models | list | Classifier instances in ensemble |
Input/Output
| Method | Input | Output |
|---|---|---|
| learn_one | x: dict, y: Any | None |
| predict_one | x: dict | Any |
| predict_proba_one | x: dict | dict[Any, float] |
Usage Examples
from river import datasets
from river import ensemble
from river import evaluate
from river import linear_model
from river import metrics
from river import naive_bayes
from river import preprocessing
from river import tree
dataset = datasets.Phishing()
model = (
preprocessing.StandardScaler() |
ensemble.VotingClassifier([
linear_model.LogisticRegression(),
tree.HoeffdingTreeClassifier(),
naive_bayes.GaussianNB()
])
)
metric = metrics.F1()
evaluate.progressive_val_score(dataset, model, metric)
# F1: 86.94%