Примечание
Перейти в конец чтобы скачать полный пример кода или запустить этот пример в браузере через JupyterLite или Binder.
Регрессия решающего дерева с AdaBoost#
Дерево решений усиливается с использованием AdaBoost.R2 [1] алгоритм на одномерном синусоидальном наборе данных с небольшим количеством гауссовского шума. 299 бустингов (300 деревьев решений) сравнивается с одним регрессором дерева решений. По мере увеличения количества бустингов регрессор может подогнать больше деталей.
См. Признаки в деревьях с градиентным бустингом на гистограммах для
примера, демонстрирующего преимущества использования более эффективных регрессионных моделей, таких как HistGradientBoostingRegressor.
Подготовка данных#
Сначала мы подготавливаем фиктивные данные с синусоидальной зависимостью и некоторым гауссовским шумом.
# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause
import numpy as np
rng = np.random.RandomState(1)
X = np.linspace(0, 6, 100)[:, np.newaxis]
y = np.sin(X).ravel() + np.sin(6 * X).ravel() + rng.normal(0, 0.1, X.shape[0])
Обучение и предсказание с DecisionTree и AdaBoost Regressors#
Теперь определим классификаторы и обучим их на данных.
Затем предскажем на тех же данных, чтобы увидеть, насколько хорошо они могут их аппроксимировать.
Первый регрессор — это DecisionTreeRegressor с max_depth=4.
Второй регрессор представляет собой AdaBoostRegressor с DecisionTreeRegressor
of max_depth=4 в качестве базового обучаемого и будет построен с n_estimators=300
этих базовых обучаемых моделей.
from sklearn.ensemble import AdaBoostRegressor
from sklearn.tree import DecisionTreeRegressor
regr_1 = DecisionTreeRegressor(max_depth=4)
regr_2 = AdaBoostRegressor(
DecisionTreeRegressor(max_depth=4), n_estimators=300, random_state=rng
)
regr_1.fit(X, y)
regr_2.fit(X, y)
y_1 = regr_1.predict(X)
y_2 = regr_2.predict(X)
Построение графиков результатов#
Наконец, мы строим график того, насколько хорошо наши два регрессора, регрессор на основе одного дерева решений и регрессор AdaBoost, могут соответствовать данным.
import matplotlib.pyplot as plt
import seaborn as sns
colors = sns.color_palette("colorblind")
plt.figure()
plt.scatter(X, y, color=colors[0], label="training samples")
plt.plot(X, y_1, color=colors[1], label="n_estimators=1", linewidth=2)
plt.plot(X, y_2, color=colors[2], label="n_estimators=300", linewidth=2)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Boosted Decision Tree Regression")
plt.legend()
plt.show()

Общее время выполнения скрипта: (0 минут 0.394 секунды)
Связанные примеры
Построить поверхности решений ансамблей деревьев на наборе данных ирисов
Построить индивидуальные и голосующие регрессионные предсказания