Spec-Zone.ru › scikit-learn

Примечание

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

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

Голосующий регрессор — это метаоцениватель ансамбля, который обучает несколько базовых регрессоров, каждый на всём наборе данных. Затем он усредняет индивидуальные прогнозы, чтобы получить итоговый прогноз. Для предсказания данных мы используем три разных регрессора: GradientBoostingRegressor, RandomForestRegressor и LinearRegression). Затем эти три регрессора будут использованы в VotingRegressor.

Наконец, для сравнения мы построим прогнозы, сделанные всеми моделями.

Мы будем работать с набором данных о диабете, который содержит 10 признаков, собранных у группы пациентов с диабетом. Целевая переменная — количественная оценка прогрессирования заболевания через год после исходного обследования.

# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

import matplotlib.pyplot as plt

from sklearn.datasets import load_diabetes
from sklearn.ensemble import (
    GradientBoostingRegressor,
    RandomForestRegressor,
    VotingRegressor,
)
from sklearn.linear_model import LinearRegression

Обучение классификаторов

Сначала загрузим набор данных о диабете и создадим регрессор с градиентным бустингом, регрессор на основе случайного леса и линейную регрессию. Затем используем эти 3 регрессора для построения голосующего регрессора:

X, y = load_diabetes(return_X_y=True)

# Train classifiers
reg1 = GradientBoostingRegressor(random_state=1)
reg2 = RandomForestRegressor(random_state=1)
reg3 = LinearRegression()

reg1.fit(X, y)
reg2.fit(X, y)
reg3.fit(X, y)

ereg = VotingRegressor([("gb", reg1), ("rf", reg2), ("lr", reg3)])
ereg.fit(X, y)
VotingRegressor(estimators=[('gb', GradientBoostingRegressor(random_state=1)),
                            ('rf', RandomForestRegressor(random_state=1)),
                            ('lr', LinearRegression())])
В среде Jupyter повторно выполните эту ячейку, чтобы отобразить представление HTML, или доверьте выполнение блокноту.
На GitHub невозможно отобразить представление HTML; попробуйте загрузить эту страницу с помощью nbviewer.org.
Параметры
estimators estimators: список кортежей (str, estimator)

Вызов метода ``fit`` для ``VotingRegressor`` обучит копии
исходных оценивателей; они будут сохранены в атрибуте класса
``self.estimators_``. Оценивателю можно присвоить значение ``'drop'`` с помощью
:meth:`set_params`.

.. versionchanged:: 0.21
Допускается значение ``'drop'``. Использование None было объявлено устаревшим в версии 0.22, а
в версии 0.24 его поддержка удалена.
[('gb', ...), ('rf', ...), ...]
weights weights: массивоподобный объект формы (n_regressors,), по умолчанию None

Последовательность весов (`float` или `int`), используемых для взвешивания
предсказанных значений перед усреднением. Если задано `None`, применяются равные веса.
None
n_jobs n_jobs: int, по умолчанию None

Число заданий, выполняемых параллельно для ``fit``.
``None`` означает 1, если только не используется контекст :obj:`joblib.parallel_backend`.
``-1`` означает использование всех процессоров. Подробнее см. :term:`Глоссарий <n_jobs>`.
None
verbose verbose: bool, по умолчанию False

Если True, по завершении обучения будет выведено затраченное
время.

.. versionadded:: 0.23
False
Обученные атрибуты
Имя Тип Значение
estimators_ estimators_: список регрессоров

Коллекция обученных подоценивателей, заданных в ``estimators``,
за исключением тех, которым присвоено значение 'drop'.
list [GradientBoost...andom_state=1), RandomForestR...andom_state=1), LinearRegression()]
n_features_in_ n_features_in_: int

Число признаков, обнаруженных во время :term:`fit`. Определяется, только если
базовый регрессор предоставляет такой атрибут после обучения.

.. versionadded:: 0.24
int 10
named_estimators_ named_estimators_: :class:`~sklearn.utils.Bunch`

Атрибут для доступа к любому обученному подоценивателю по имени.

.. versionadded:: 0.20
Bunch {'gb': Gradie...rRegression()}
Параметры
random_state random_state: int, экземпляр RandomState или None, по умолчанию None

Задаёт начальное значение генератора случайных чисел для каждого оценивателя Tree на каждой
итерации бустинга.
Кроме того, управляет случайной перестановкой признаков при
каждом разбиении (подробнее см. примечания).
Также управляет случайным разделением обучающих данных для получения
валидационного набора, если n_iter_no_change не равен None.
Передайте целое число, чтобы получать воспроизводимые результаты при нескольких вызовах функции.
См. :term:`Глоссарий <random_state>`.
1
loss loss: {'squared_error', 'absolute_error', 'huber', 'quantile'}, по умолчанию 'squared_error'

Функция потерь, которую необходимо минимизировать. 'squared_error' означает квадрат
ошибки регрессии. 'absolute_error' означает абсолютную ошибку
регрессии и является робастной функцией потерь. 'huber' — это
комбинация этих двух функций. 'quantile' позволяет выполнять квантильную регрессию (используйте
`alpha`, чтобы задать квантиль).
Пример квантильной регрессии для построения
предиктивных интервалов с `loss='quantile'` см. в
:ref:`sphx_glr_auto_examples_ensemble_plot_gradient_boosting_quantile.py`.
'squared_error'
learning_rate learning_rate: float, по умолчанию 0.1

Скорость обучения уменьшает вклад каждого дерева в `learning_rate` раз.
Между learning_rate и n_estimators существует компромисс.
Значения должны находиться в диапазоне `[0.0, inf)`.
0.1
n_estimators n_estimators: int, по умолчанию 100

Число этапов бустинга. Градиентный бустинг
довольно устойчив к переобучению, поэтому большее число этапов обычно
обеспечивает лучшую производительность.
Значения должны находиться в диапазоне `[1, inf)`.
100
subsample subsample: float, по умолчанию 1.0

Доля выборок, используемых для обучения отдельных базовых
моделей. Если значение меньше 1.0, применяется стохастический градиентный
бустинг. `subsample` взаимодействует с параметром `n_estimators`.
Выбор `subsample < 1.0` приводит к уменьшению дисперсии
и увеличению смещения.
Значения должны находиться в диапазоне `(0.0, 1.0]`.
1.0
criterion criterion: {'friedman_mse', 'squared_error'}, по умолчанию 'friedman_mse'

Этот параметр не влияет на результат.

.. versionadded:: 0.18

.. deprecated:: 1.9
`criterion` объявлен устаревшим и будет удалён в версии 1.11.
'deprecated'
min_samples_split min_samples_split: int или float, по умолчанию 2

Минимальное число выборок, необходимое для разбиения внутреннего узла:

- Если задан int, значения должны находиться в диапазоне `[2, inf)`.
- Если задан float, значения должны находиться в диапазоне `(0.0, 1.0]`, а `min_samples_split`
будет равен `ceil(min_samples_split * n_samples)`.

.. versionchanged:: 0.18
Добавлена возможность задавать доли с помощью значений float.
2
min_samples_leaf min_samples_leaf: int или float, по умолчанию 1

Минимальное число выборок, необходимое для листового узла.
Точка разбиения на любой глубине рассматривается только в том случае, если в каждой из левой и
правой ветвей остаётся не менее ``min_samples_leaf`` обучающих выборок. Это может сгладить модель,
особенно в задаче регрессии.

- Если задан int, значения должны находиться в диапазоне `[1, inf)`.
- Если задан float, значения должны находиться в диапазоне `(0.0, 1.0)`, а `min_samples_leaf`
будет равен `ceil(min_samples_leaf * n_samples)`.

.. versionchanged:: 0.18
Добавлена возможность задавать доли с помощью значений float.
1
min_weight_fraction_leaf min_weight_fraction_leaf: float, по умолчанию 0.0

Минимальная взвешенная доля общей суммы весов (для всех
входных выборок), необходимая для листового узла. Если sample_weight не задан, выборки имеют
одинаковые веса.
Значения должны находиться в диапазоне `[0.0, 0.5]`.
0.0
max_depth max_depth: int или None, по умолчанию 3

Максимальная глубина отдельных регрессионных оценивателей. Максимальная
глубина ограничивает число узлов в дереве. Подбирайте этот параметр
для достижения наилучшей производительности; оптимальное значение зависит от взаимодействия
входных переменных. Если задано None, узлы расширяются до тех пор, пока
все листья не станут чистыми или пока в каждом листе не останется меньше
выборок, чем задано в min_samples_split.
Если задан int, значения должны находиться в диапазоне `[1, inf)`.
3
min_impurity_decrease min_impurity_decrease: float, по умолчанию 0.0

Узел будет разделён, если это разбиение уменьшает неоднородность
на величину, большую или равную этому значению.
Значения должны находиться в диапазоне `[0.0, inf)`.

Уравнение взвешенного уменьшения неоднородности имеет следующий вид::

N_t / N * (impurity - N_t_R / N_t * right_impurity
- N_t_L / N_t * left_impurity)

где ``N`` — общее число выборок, ``N_t`` — число
выборок в текущем узле, ``N_t_L`` — число выборок в левом дочернем узле, а ``N_t_R`` — число выборок в правом дочернем узле.

``N``, ``N_t``, ``N_t_R`` и ``N_t_L`` обозначают взвешенные суммы,
если передан ``sample_weight``.

.. versionadded:: 0.19
0.0
init init: оцениватель или 'zero', по умолчанию None

Объект-оцениватель, используемый для вычисления начальных предсказаний.
``init`` должен предоставлять методы :term:`fit` и :term:`predict`. Если задано 'zero',
начальные необработанные предсказания устанавливаются в ноль. По умолчанию используется
``DummyEstimator``, который предсказывает либо среднее значение целевой переменной
(для loss='squared_error'), либо квантиль для остальных функций потерь.
None
max_features max_features: {'sqrt', 'log2'}, int или float, по умолчанию None

Число признаков, рассматриваемых при поиске наилучшего разбиения:

- Если задан int, значения должны находиться в диапазоне `[1, inf)`.
- Если задан float, значения должны находиться в диапазоне `(0.0, 1.0]`, а число признаков,
рассматриваемых при каждом разбиении, будет равно `max(1, int(max_features * n_features_in_))`.
- Если задано "sqrt", то `max_features=sqrt(n_features)`.
- Если задано "log2", то `max_features=log2(n_features)`.
- Если задано None, то `max_features=n_features`.

Выбор `max_features < n_features` приводит к уменьшению дисперсии
и увеличению смещения.

Примечание: поиск разбиения продолжается, пока не будет найдено хотя бы одно
допустимое разделение выборок узла, даже если для этого потребуется фактически проверить
больше признаков, чем ``max_features``.
None
alpha alpha: float, по умолчанию 0.9

Квантиль alpha для функции потерь Huber и функции
квантильных потерь. Используется, только если ``loss='huber'`` или ``loss='quantile'``.
Значения должны находиться в диапазоне `(0.0, 1.0)`.
0.9
verbose verbose: int, по умолчанию 0

Включает подробный вывод. Если задано 1, периодически выводятся ход обучения и показатели
производительности (чем больше деревьев, тем реже вывод). Если значение больше
1, ход обучения и показатели производительности выводятся для каждого дерева.
Значения должны находиться в диапазоне `[0, inf)`.
0
max_leaf_nodes max_leaf_nodes: int, по умолчанию None

Выращивать деревья по принципу «сначала лучший» с числом листьев не более ``max_leaf_nodes``.
Наилучшие узлы определяются относительным уменьшением неоднородности.
Значения должны находиться в диапазоне `[2, inf)`.
Если задано None, число листовых узлов не ограничено.
None
warm_start warm_start: bool, по умолчанию False

Если задано ``True``, повторно используется результат предыдущего вызова fit,
а в ансамбль добавляются новые оцениватели; в противном случае предыдущий результат удаляется.
См. :term:`глоссарий <warm_start>`.
False
validation_fraction validation_fraction: float, по умолчанию 0.1

Доля обучающих данных, выделяемая в валидационный набор для
ранней остановки. Значения должны находиться в диапазоне `(0.0, 1.0)`.
Используется, только если для ``n_iter_no_change`` задано целое число.

.. versionadded:: 0.20
0.1
n_iter_no_change n_iter_no_change: int, по умолчанию None

``n_iter_no_change`` определяет, следует ли использовать раннюю остановку
для прекращения обучения, если оценка на валидационном наборе не улучшается. По
умолчанию задано None, что отключает раннюю остановку. Если задано число,
в качестве валидационного набора выделяется доля ``validation_fraction`` обучающих
данных, а обучение прекращается, если оценка на валидационном наборе не улучшается на протяжении всех предыдущих ``n_iter_no_change`` итераций.
Значения должны находиться в диапазоне `[1, inf)`.
См.
:ref:`sphx_glr_auto_examples_ensemble_plot_gradient_boosting_early_stopping.py`.

.. versionadded:: 0.20
None
tol tol: float, по умолчанию 1e-4

Допуск для ранней остановки. Если функция потерь не улучшается
как минимум на tol в течение ``n_iter_no_change`` итераций (если задано число),
обучение прекращается.
Значения должны находиться в диапазоне `[0.0, inf)`.

.. versionadded:: 0.20
0.0001
ccp_alpha ccp_alpha: неотрицательное значение float, по умолчанию 0.0

Параметр сложности, используемый для отсечения по минимальной стоимости и сложности. Выбирается
поддерево с наибольшей стоимостью и сложностью, меньшей, чем
``ccp_alpha``. По умолчанию отсечение не выполняется.
Значения должны находиться в диапазоне `[0.0, inf)`.
Подробности см. в :ref:`minimal_cost_complexity_pruning`. Пример такого
отсечения см. в
:ref:`sphx_glr_auto_examples_tree_plot_cost_complexity_pruning.py`.

.. versionadded:: 0.22
0.0
Обученные атрибуты
Имя Тип Значение
estimators_ estimators_: ndarray из DecisionTreeRegressor формы (n_estimators, 1)

Коллекция обученных подоценивателей.
ndarray[object](100, 1) [[DecisionTreeRegressor(max_depth=3, random_state=RandomState(MT19937) at 0x78414C2DC640)], [DecisionTreeRegressor(max_depth=3, random_state=RandomState(MT19937) at 0x78414C2DC640)], [DecisionTreeRegressor(max_depth=3, random_state=RandomState(MT19937) at 0x78414C2DC640)], ..., [DecisionTreeRegressor(max_depth=3, random_state=RandomState(MT19937) at 0x78414C2DC640)], [DecisionTreeRegressor(max_depth=3, random_state=RandomState(MT19937) at 0x78414C2DC640)], [DecisionTreeRegressor(max_depth=3, random_state=RandomState(MT19937) at 0x78414C2DC640)]]
feature_importances_ feature_importances_: ndarray формы (n_features,)

Важность признаков, основанная на неоднородности.
Чем выше значение, тем важнее признак.
Важность признака вычисляется как (нормированное)
суммарное уменьшение MSE, достигнутое благодаря этому признаку. Этот показатель также
известен как важность Джини.

Предупреждение: важность признаков, основанная на неоднородности, может вводить в заблуждение для
признаков с большим количеством уникальных значений. В качестве альтернативы см.
:func:`sklearn.inspection.permutation_importance`.
ndarray[float64](10,) [0.05,0.01,0.26,...,0.02,0.4 ,0.04]
init_ init_: оцениватель

Оцениватель, предоставляющий начальные предсказания. Задаётся аргументом ``init``.
DummyRegressor DummyRegressor()
max_features_ max_features_: int

Выведенное значение max_features.
int 10
n_estimators_ n_estimators_: int

Число оценивателей, выбранное при ранней остановке (если
указан ``n_iter_no_change``). В противном случае устанавливается
значение ``n_estimators``.
int 100
n_features_in_ n_features_in_: int

Число признаков, обнаруженных во время :term:`fit`.

.. versionadded:: 0.24
int 10
n_trees_per_iteration_ n_trees_per_iteration_: int

Число деревьев, построенных на каждой итерации. Для регрессоров это
всегда 1.

.. versionadded:: 1.4.0
int 1
train_score_ train_score_: ndarray формы (n_estimators,)

i-я оценка ``train_score_[i]`` — это значение функции потерь
модели на итерации ``i`` для выборки, включённой в обучающую подвыборку.
Если ``subsample == 1``, это значение функции потерь на обучающих данных.
ndarray[float64](100,) [5365.79,4906.74,4503.84,...,1199.28,1195.02,1191.67]
Параметры
random_state random_state: int, экземпляр RandomState или None, по умолчанию=None

Управляет как случайностью при бутстрэп-выборке образцов, используемых
при построении деревьев (если ``bootstrap=True``), так и выборкой
признаков, учитываемых при поиске наилучшего разбиения в каждом узле
(если ``max_features < n_features``).
Подробности см. в :term:`Глоссарии <random_state>`.
1
n_estimators n_estimators: int, по умолчанию=100

Количество деревьев в лесу.

.. versionchanged:: 0.22
Значение `n_estimators` по умолчанию изменено с 10 на 100
в версии 0.22.
100
criterion criterion: {"squared_error", "absolute_error", "poisson"}, по умолчанию="squared_error"

Функция для измерения качества разбиения. Поддерживаются критерии
"squared_error" для среднеквадратичной ошибки, которая эквивалентна
уменьшению дисперсии при отборе признаков и минимизирует L2-
потери, используя среднее значение каждого конечного узла, "absolute_error" для средней
абсолютной ошибки, минимизирующей L1-потери с использованием медианы каждого конечного
узла, и "poisson", который использует уменьшение девианса Пуассона для поиска разбиений,
также используя среднее значение каждого конечного узла.

.. versionadded:: 0.18
Критерий средней абсолютной ошибки (MAE).

.. versionadded:: 1.0
Критерий Пуассона.

.. versionchanged:: 1.9
Критерий `"friedman_mse"` устарел.
'squared_error'
max_depth max_depth: int, по умолчанию=None

Максимальная глубина дерева. Если None, узлы расширяются до тех пор,
пока все листья не станут чистыми или пока все листья не будут содержать меньше
образцов, чем min_samples_split.
None
min_samples_split min_samples_split: int или float, по умолчанию=2

Минимальное число образцов, необходимое для разделения внутреннего узла:

- Если значение int, `min_samples_split` задаёт минимальное количество.
- Если значение float, `min_samples_split` — это доля, а
`ceil(min_samples_split * n_samples)` — минимальное
число образцов для каждого разбиения.

.. versionchanged:: 0.18
Добавлена возможность задавать доли значениями float.
2
min_samples_leaf min_samples_leaf: int или float, по умолчанию=1

Минимальное число образцов, необходимое в листовом узле.
Точка разбиения на любой глубине рассматривается, только если в каждой из левой и
правой ветвей остаётся не менее ``min_samples_leaf`` обучающих образцов. Это может сглаживать модель,
особенно в задачах регрессии.

- Если значение int, `min_samples_leaf` задаёт минимальное количество.
- Если значение float, `min_samples_leaf` — это доля, а
`ceil(min_samples_leaf * n_samples)` — минимальное
число образцов для каждого узла.

.. versionchanged:: 0.18
Добавлена возможность задавать доли значениями float.
1
min_weight_fraction_leaf min_weight_fraction_leaf: float, по умолчанию=0.0

Минимальная взвешенная доля от суммы всех весов (всех
входных образцов), необходимая в листовом узле. Если sample_weight не задан, образцы
имеют одинаковый вес.
0.0
max_features max_features: {"sqrt", "log2", None}, int или float, по умолчанию=1.0

Число признаков, учитываемых при поиске наилучшего разбиения:

- Если значение int, при каждом разбиении рассматривается `max_features` признаков.
- Если значение float, `max_features` — это доля, и
при каждом разбиении рассматриваются `max(1, int(max_features * n_features_in_))` признаков.
- Если значение "sqrt", то `max_features=sqrt(n_features)`.
- Если значение "log2", то `max_features=log2(n_features)`.
- Если значение None или 1.0, то `max_features=n_features`.

.. note::
Значение по умолчанию 1.0 эквивалентно бэггингу деревьев; повысить
случайность можно, задав меньшие значения, например 0.3.

.. versionchanged:: 1.1
Значение `max_features` по умолчанию изменено с `"auto"` на 1.0.

Примечание: поиск разбиения продолжается, пока не будет найдено хотя бы одно
допустимое разбиение образцов узла, даже если для этого придётся фактически
проверить больше признаков, чем ``max_features``.
1.0
max_leaf_nodes max_leaf_nodes: int, по умолчанию=None

Деревья строятся в наилучшем порядке с ограничением ``max_leaf_nodes``.
Наилучшие узлы определяются относительным уменьшением неоднородности.
Если None, число листовых узлов не ограничено.
None
min_impurity_decrease min_impurity_decrease: float, по умолчанию=0.0

Узел будет разделён, если это разбиение уменьшает неоднородность
на величину, не меньшую данного значения.

Уравнение взвешенного уменьшения неоднородности имеет следующий вид::

N_t / N * (impurity - N_t_R / N_t * right_impurity
- N_t_L / N_t * left_impurity)

где ``N`` — общее число образцов, ``N_t`` — число
образцов в текущем узле, ``N_t_L`` — число образцов в левом дочернем узле,
а ``N_t_R`` — число образцов в правом дочернем узле.

Если передан ``sample_weight``, ``N``, ``N_t``, ``N_t_R`` и ``N_t_L``
обозначают взвешенные суммы.

.. versionadded:: 0.19
0.0
bootstrap bootstrap: bool, по умолчанию=True

Используются ли бутстрэп-выборки при построении деревьев. Если False,
для построения каждого дерева используется весь набор данных.
True
oob_score oob_score: bool или вызываемый объект, по умолчанию=False

Использовать ли вневыборочные образцы для оценки способности к обобщению.
По умолчанию применяется :func:`~sklearn.metrics.r2_score`.
Чтобы использовать пользовательскую метрику, передайте вызываемый объект с сигнатурой `metric(y_true, y_pred)`. Доступно только при `bootstrap=True`.

Пример оценки ошибки на вневыборочных образцах (OOB) см. в примере
:ref:`sphx_glr_auto_examples_ensemble_plot_ensemble_oob.py`.
False
n_jobs n_jobs: int, по умолчанию=None

Число задач для параллельного выполнения. Методы :meth:`fit`, :meth:`predict`,
:meth:`decision_path` и :meth:`apply` выполняются параллельно для
деревьев. ``None`` означает 1, если только код не выполняется в контексте
:obj:`joblib.parallel_backend`. ``-1`` означает использование всех процессоров. Подробности см. в :term:`Глоссарии
<n_jobs>`.
None
verbose verbose: int, по умолчанию=0

Управляет подробностью вывода при обучении и предсказании.
0
warm_start warm_start: bool, по умолчанию=False

Если задано ``True``, используется решение предыдущего вызова fit,
а в ансамбль добавляются новые оцениватели; в противном случае обучается полностью
новый лес. Подробности см. в :term:`Глоссарии <warm_start>` и
:ref:`tree_ensemble_warm_start`.
False
ccp_alpha ccp_alpha: неотрицательное число с плавающей точкой, по умолчанию=0.0

Параметр сложности, используемый при минимальном отсечении по критерию «стоимость–сложность». Выбирается
поддерево с наибольшей стоимостью сложности, меньшей
``ccp_alpha``. По умолчанию отсечение не выполняется. Подробности см.
в :ref:`minimal_cost_complexity_pruning`. Пример такого отсечения см.
в :ref:`sphx_glr_auto_examples_tree_plot_cost_complexity_pruning.py`.

.. versionadded:: 0.22
0.0
max_samples max_samples: int или float, по умолчанию=None

Если bootstrap равно True, число образцов, выбираемых из X
для обучения каждого базового оценивателя.

- Если None (значение по умолчанию), выбирается `X.shape[0]` образцов независимо от
`sample_weight`.
- Если значение int, выбирается `max_samples` образцов.
- Если значение float, выбирается `max_samples * X.shape[0]` невзвешенных образцов
или `max_samples * sample_weight.sum()` взвешенных образцов.

.. versionadded:: 0.22

.. versionchanged:: 1.9
Для взвешенных образцов значение float параметра `max_samples` теперь рассчитывается относительно `sample_weight.sum()`, а не
`X.shape[0]`.
None
monotonic_cst monotonic_cst: массивоподобный объект из int формы (n_features), по умолчанию=None

Задаёт монотонное ограничение, применяемое к каждому признаку.
- 1: монотонно возрастающий
- 0: без ограничений
- -1: монотонно убывающий

Если monotonic_cst равно None, ограничения не применяются.

Монотонные ограничения не поддерживаются для:
- регрессии с несколькими выходами (то есть когда `n_outputs_ > 1`).

Подробнее см. в :ref:`Руководстве пользователя <monotonic_cst_gbdt>`.

.. versionadded:: 1.4
None
Обученные атрибуты
Имя Тип Значение
estimator_ estimator_: :class:`~sklearn.tree.DecisionTreeRegressor`

Шаблон дочернего оценивателя, используемый для создания коллекции обученных
подоценивателей.

.. versionadded:: 1.2
`base_estimator_` переименован в `estimator_`.
DecisionTreeRegressor DecisionTreeRegressor()
estimators_ estimators_: список DecisionTreeRegressor

Коллекция обученных подоценивателей.
list [DecisionTreeR...te=1791095845), DecisionTreeR...te=2135392491), DecisionTreeR...ate=946286476), DecisionTreeR...te=1857819720), ...]
estimators_samples_ estimators_samples_: список массивов

Подмножество выбранных образцов (то есть образцы, попавшие в бутстрэп-выборку) для каждого базового
оценивателя. Каждое подмножество задаётся массивом выбранных индексов.

.. versionadded:: 1.4
list [array([132, 2... dtype=int32), array([223, 1... dtype=int32), array([222, 1... dtype=int32), array([386, ... dtype=int32), ...]
feature_importances_ feature_importances_: ndarray формы (n_features,)

Важность признаков, определяемая на основе неоднородности.
Чем выше значение, тем важнее признак.
Важность признака вычисляется как (нормированное)
общее уменьшение критерия, обусловленное этим признаком. Этот показатель также
известен как важность Джини.

Предупреждение: важность признаков на основе неоднородности может быть ненадёжной для признаков
с большим числом уникальных значений. В качестве альтернативы см.
:func:`sklearn.inspection.permutation_importance`.
ndarray[float64](10,) [0.06,0.01,0.28,...,0.02,0.3 ,0.07]
n_features_in_ n_features_in_: int

Число признаков, использованных во время :term:`fit`.

.. versionadded:: 0.24
int 10
n_outputs_ n_outputs_: int

Число выходов при выполнении ``fit``.
int 1
Параметры
fit_intercept fit_intercept: bool, по умолчанию=True

Вычислять ли свободный член для этой модели. Если задано
False, свободный член не будет использоваться в вычислениях
(то есть предполагается, что данные центрированы).
True
copy_X copy_X: bool, по умолчанию=True

Если True, X будет скопирован; иначе он может быть перезаписан.
True
tol tol: float, по умолчанию=1e-6

Точность решения (`coef_`) определяется параметром `tol`, который
задаёт критерий сходимости используемого решателя. При обучении на разреженных обучающих данных `tol`
задаётся как `atol` и `btol` в :func:`scipy.sparse.linalg.lsqr`. При обучении на плотных обучающих данных `tol` задаётся как `cond` в
:func:`scipy.linalg.lstsq`.

.. versionadded:: 1.7
.. versionchanged:: 1.9
Теперь поддерживается для плотных данных и интерпретируется как параметр `cond`.
1e-06
n_jobs n_jobs: int, по умолчанию=None

Число задач, используемых для вычислений. Ускорение достигается
только для достаточно больших задач, то есть если, во-первых,
`n_targets > 1`, и, во-вторых, `X` является разреженным или задан параметр `positive`
равным `True`. ``None`` означает 1, если только код не выполняется в контексте
:obj:`joblib.parallel_backend`. ``-1`` означает использование всех
процессоров. Подробности см. в :term:`Глоссарии <n_jobs>`.
None
positive positive: bool, по умолчанию=False

Если задано ``True``, коэффициенты принудительно делаются положительными. Этот
параметр поддерживается только для плотных массивов.

Сравнение модели линейной регрессии с ограничениями на положительность
коэффициентов регрессии и модели линейной регрессии без таких ограничений
см. в :ref:`sphx_glr_auto_examples_linear_model_plot_nnls.py`.

.. versionadded:: 0.24
False
Обученные атрибуты
Имя Тип Значение
coef_ coef_: массив формы (n_features, ) или (n_targets, n_features)

Оценённые коэффициенты модели линейной регрессии.
Если при обучении передано несколько целевых значений (y двумерный),
это двумерный массив формы (n_targets, n_features); если передано только
одно целевое значение, это одномерный массив длины n_features.
ndarray[float64](10,) [ -10.01,-239.82, 519.85,..., 177.06, 751.27, 67.63]
intercept_ intercept_: float или массив формы (n_targets,)

Свободный член линейной модели. Равен 0.0, если
`fit_intercept = False`.
float64 152.1
n_features_in_ n_features_in_: int

Число признаков, использованных во время :term:`fit`.

.. versionadded:: 0.24
int 10
rank_ rank_: int

Ранг матрицы `X`. Доступно только если `X` является плотной матрицей.
int 10
singular_ singular_: массив формы (min(X, y),)

Сингулярные значения `X`. Доступно только если `X` является плотной матрицей.
ndarray[float64](10,) [2.01,1.22,1.1 ,...,0.66,0.28,0.09]
3 признака
votingregressor_gb
votingregressor_rf
votingregressor_lr


Выполнение предсказаний

Теперь мы используем каждый из регрессоров, чтобы получить первые 20 предсказаний.

xt = X[:20]

pred1 = reg1.predict(xt)
pred2 = reg2.predict(xt)
pred3 = reg3.predict(xt)
pred4 = ereg.predict(xt)

Построение результатов

Наконец, мы визуализируем 20 прогнозов. Красные звёздочки обозначают средний прогноз, полученный с помощью VotingRegressor.

plt.figure()
plt.plot(pred1, "gd", label="GradientBoostingRegressor")
plt.plot(pred2, "b^", label="RandomForestRegressor")
plt.plot(pred3, "ys", label="LinearRegression")
plt.plot(pred4, "r*", ms=10, label="VotingRegressor")

plt.tick_params(axis="x", which="both", bottom=False, top=False, labelbottom=False)
plt.ylabel("predicted")
plt.xlabel("training samples")
plt.legend(loc="best")
plt.title("Regressor predictions and their average")

plt.show()
Regressor predictions and their average

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

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_voting_regressor.ipynb

Download Python source code: plot_voting_regressor.py

Download zipped: plot_voting_regressor.zip

Связанные примеры

Объединение оценщиков с помощью стекинга

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

Регрессия с градиентным бустингом

Сравнение случайных лесов и метаоценщика для многовыходных задач

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

Spec-Zone.ru

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