AdaBoost: reweighting misclassified samples each round
Intermediate classical-mlensemblesboosting
Implement:
def adaboost_train(input, labels, n_rounds, max_depth=1, seed=None) -> list[tuple[dict, float]]: ...
def adaboost_predict(ensemble, input) -> np.ndarray: ...
labels are {-1, +1}-valued, AdaBoost's standard convention, not {0, 1}.
- Reuse
03-best-split-minimal-tree's build_tree/predict_tree, don't reimplement tree construction.
max_depth=1 by default, a shallow "decision stump," AdaBoost's classic weak learner.