Spec-Zone.ru › scikit-learn

Примечание

Перейти в конец, чтобы скачать полный код примера или запустить этот пример в браузере с помощью JupyterLite или Binder.

Регрессия деревом решений с AdaBoost

Дерево решений обучается с помощью алгоритма AdaBoost.R2 [1] на одномерном синусоидальном наборе данных с небольшим количеством гауссовского шума. Сравниваются 299 этапов бустинга (300 деревьев решений) и один регрессор на основе дерева решений. По мере увеличения числа этапов бустинга регрессор может улавливать больше деталей.

Пример, демонстрирующий преимущества использования более эффективных моделей регрессии, таких как HistGradientBoostingRegressor, см. в разделе Признаки в деревьях с гистограммным градиентным бустингом.

[1]

H. Drucker, «Улучшение регрессоров с помощью методов бустинга», 1997.

Подготовка данных

Сначала подготовим искусственные данные с синусоидальной зависимостью и небольшим количеством гауссовского шума.

# 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

Теперь определим классификаторы и обучим их на данных. Затем получим прогнозы на тех же данных, чтобы оценить качество подгонки. Первый регрессор — это DecisionTreeRegressor с max_depth=4. Второй регрессор — это AdaBoostRegressor с DecisionTreeRegressor в качестве базового алгоритма; он будет состоять из n_estimators=300 таких базовых алгоритмов, где max_depth=4.

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()
Boosted Decision Tree Regression

Общее время выполнения скрипта: (0 минут 0.453 секунды)

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_adaboost_regression.ipynb

Download Python source code: plot_adaboost_regression.py

Download zipped: plot_adaboost_regression.zip

Похожие примеры

Регрессия деревом решений

Поверхности решений ансамблей деревьев на наборе данных ирисов

Преобразование признаков с помощью ансамблей деревьев

Построение графиков прогнозов отдельных регрессоров и голосующего регрессора

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/auto_examples/ensemble/plot_adaboost_regression.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API