Spec-Zone.ru › scikit-learn

RandomForestRegressor

classsklearn.ensemble.RandomForestRegressor(n_estimators=100, *, criterion='squared_error', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=1.0, max_leaf_nodes=None, min_impurity_decrease=0.0, bootstrap=True, oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, ccp_alpha=0.0, max_samples=None, monotonic_cst=None)[исходный код]

Регрессор на основе случайного леса.

Случайный лес — это метаоцениватель, который обучает несколько деревьев решений-регрессоров на различных подвыборках набора данных и использует усреднение для повышения точности прогнозирования и контроля переобучения. Деревья в лесу используют стратегию наилучшего разбиения, т. е. эквивалентную передаче splitter="best" базовому DecisionTreeRegressor. Размер подвыборки задаётся параметром max_samples, если bootstrap=True (по умолчанию); в противном случае для построения каждого дерева используется весь набор данных.

Этот оцениватель изначально поддерживает пропущенные значения (NaN). Во время обучения алгоритм построения дерева в каждой точке разбиения определяет, в какой дочерний узел — левый или правый — следует направить образцы с пропущенными значениями, основываясь на потенциальном выигрыше. При прогнозировании образцы с пропущенными значениями соответственно направляются в левый или правый дочерний узел. Если во время обучения для некоторого признака не встречалось пропущенных значений, то образцы с пропущенными значениями направляются в тот дочерний узел, в котором больше всего образцов.

Сравнение ансамблевых моделей на основе деревьев см. в примере Сравнение случайных лесов и моделей градиентного бустинга на гистограммах.

Подробнее см. в руководстве пользователя.

Параметры:
n_estimatorsint, default=100

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

Изменено в версии 0.22: Значение n_estimators по умолчанию изменено с 10 на 100 в версии 0.22.

criterion{“squared_error”, “absolute_error”, “poisson”}, default=”squared_error”

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

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

Добавлено в версии 1.0: Критерий Пуассона.

Изменено в версии 1.9: Критерий "friedman_mse" объявлен устаревшим.

max_depthint, default=None

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

min_samples_splitint or float, default=2

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

  • Если задано целое число, min_samples_split считается минимальным количеством.
  • Если задано число с плавающей точкой, min_samples_split является долей, а ceil(min_samples_split * n_samples) — минимальным количеством образцов для каждого разбиения.

Изменено в версии 0.18: Добавлена поддержка значений с плавающей точкой для задания долей.

min_samples_leafint or float, default=1

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

  • Если задано целое число, min_samples_leaf считается минимальным количеством.
  • Если задано число с плавающей точкой, min_samples_leaf является долей, а ceil(min_samples_leaf * n_samples) — минимальным количеством образцов для каждого узла.

Изменено в версии 0.18: Добавлена поддержка значений с плавающей точкой для задания долей.

min_weight_fraction_leaffloat, default=0.0

Минимальная взвешенная доля суммы весов (всех входных образцов), необходимая для конечного узла. Если параметр sample_weight не задан, все образцы имеют одинаковый вес.

max_features{“sqrt”, “log2”, None}, int or float, default=1.0

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

  • Если задано целое число, при каждом разбиении рассматриваются max_features признаков.
  • Если задано число с плавающей точкой, 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.

Примечание

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

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

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

max_leaf_nodesint, default=None

Строить деревья с max_leaf_nodes в порядке убывания приоритета. Наилучшие узлы определяются по относительному уменьшению неоднородности. Если задано None, количество листьев не ограничено.

min_impurity_decreasefloat, default=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 — количество образцов в правом дочернем узле.

N, N_t, N_t_R и N_t_L относятся к взвешенной сумме, если передан sample_weight.

Добавлено в версии 0.19.

bootstrapbool, default=True

Используются ли при построении деревьев бутстреп-выборки. Если задано False, для построения каждого дерева используется весь набор данных.

oob_scorebool or callable, default=False

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

Пример оценки ошибки на вневыборочных (OOB) данных см. в разделе Ошибки OOB для случайных лесов.

n_jobsint, default=None

Количество параллельно выполняемых задач. fit, predict, decision_path и apply выполняются параллельно для деревьев. None означает 1, за исключением случаев, когда используется контекст joblib.parallel_backend. -1 означает использование всех процессоров. Подробнее см. в глоссарии.

random_stateint, RandomState instance or None, default=None

Управляет как случайностью при формировании бутстреп-выборок для построения деревьев (если задано bootstrap=True), так и выборкой признаков, рассматриваемых при поиске наилучшего разбиения в каждом узле (если задано max_features < n_features). Подробнее см. в глоссарии.

verboseint, default=0

Управляет подробностью вывода при обучении и прогнозировании.

warm_startbool, default=False

Если задано True, повторно используется результат предыдущего вызова fit и в ансамбль добавляются новые оцениватели; в противном случае обучается совершенно новый лес. Подробнее см. в глоссарии и разделе Обучение дополнительных деревьев.

ccp_alphanon-negative float, default=0.0

Параметр сложности, используемый для минимального отсечения по критерию «стоимость — сложность». Будет выбрано поддерево с наибольшей стоимостью сложности, меньшей ccp_alpha. По умолчанию отсечение не выполняется. Подробнее см. в разделе Минимальное отсечение по критерию «стоимость — сложность». Пример такого отсечения см. в разделе Построение деревьев решений с последующим отсечением по критерию «стоимость — сложность».

Добавлено в версии 0.22.

max_samplesint or float, default=None

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

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

Добавлено в версии 0.22.

Изменено в версии 1.9: Значение max_samples с плавающей точкой для взвешенных образцов теперь рассчитывается относительно sample_weight.sum(), а не X.shape[0].

monotonic_cstarray-like of int of shape (n_features), default=None
Задаёт ограничение монотонности для каждого признака.
  • 1: монотонно возрастающий
  • 0: без ограничений
  • -1: монотонно убывающий

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

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

Подробнее см. в руководстве пользователя.

Добавлено в версии 1.4.

Атрибуты:
estimator_DecisionTreeRegressor

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

Добавлено в версии 1.2: base_estimator_ переименован в estimator_.

estimators_list of DecisionTreeRegressor

Коллекция обученных подоценивателей.

feature_importances_ndarray of shape (n_features,)

Важность признаков, основанная на неоднородности.

n_features_in_int

Количество признаков, обнаруженных во время обучения.

Добавлено в версии 0.24.

feature_names_in_ndarray of shape (n_features_in_,)

Имена признаков, обнаруженных во время обучения. Определяется, только если X содержит имена признаков, представленные строками.

Добавлено в версии 1.0.

n_outputs_int

Количество выходов при выполнении fit.

oob_score_float

Оценка на обучающем наборе, полученная с помощью вневыборочной оценки. Этот атрибут существует только при значении True у oob_score.

oob_prediction_ndarray of shape (n_samples,) or (n_samples, n_outputs)

Прогноз, вычисленный с помощью вневыборочной оценки на обучающем наборе. Этот атрибут существует только при значении True у oob_score.

estimators_samples_list of arrays

Подмножество выбранных образцов для каждого базового оценивателя.

См. также

sklearn.tree.DecisionTreeRegressor

Регрессор на основе дерева решений.

sklearn.ensemble.ExtraTreesRegressor

Ансамбль регрессоров на основе чрезвычайно рандомизированных деревьев.

sklearn.ensemble.HistGradientBoostingRegressor

Дерево регрессии с градиентным бустингом на основе гистограмм; очень быстро работает на больших наборах данных (n_samples >= 10_000).

Примечания

Значения параметров по умолчанию, управляющих размером деревьев (например, max_depth, min_samples_leaf и т. д.), приводят к созданию полностью разросшихся деревьев без отсечения, которые на некоторых наборах данных могут быть очень большими. Чтобы снизить потребление памяти, следует контролировать сложность и размер деревьев, задавая значения этих параметров.

При каждом разбиении признаки всегда переставляются в случайном порядке. Поэтому наилучшее найденное разбиение может различаться даже при одних и тех же обучающих данных, max_features=n_features и bootstrap=False, если при поиске наилучшего разбиения для нескольких проверенных разбиений получено одинаковое улучшение критерия. Чтобы обеспечить детерминированное поведение при обучении, необходимо зафиксировать random_state.

В значении max_features=1.0 по умолчанию используется n_features, а не n_features / 3. Последнее изначально было предложено в [1], тогда как первое позднее получило эмпирическое обоснование в [2].

Ссылки

[1]

Л. Брейман, «Случайные леса», Machine Learning, 45(1), 5–32, 2001.

[2]

П. Гёртс, Д. Эрнст и Л. Венкель, «Чрезвычайно рандомизированные деревья», Machine Learning, 63(1), 3–42, 2006.

Примеры

>>> from sklearn.ensemble import RandomForestRegressor
>>> from sklearn.datasets import make_regression
>>> X, y = make_regression(n_features=4, n_informative=2,
...                        random_state=0, shuffle=False)
>>> regr = RandomForestRegressor(max_depth=2, random_state=0)
>>> regr.fit(X, y)
RandomForestRegressor(...)
>>> print(regr.predict([[0, 0, 0, 0]]))
[-8.32987858]
apply(X)[исходный код]

Применить деревья леса к X и вернуть индексы листьев.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Входные образцы. Внутри dtype будет преобразован в dtype=np.float32. Если передана разреженная матрица, она будет преобразована в разреженную csr_matrix.

Возвращает:
X_leavesndarray of shape (n_samples, n_estimators)

Для каждой точки данных x в X и каждого дерева в лесу возвращает индекс листа, в который попадает x.

decision_path(X)[исходный код]

Вернуть путь принятия решений в лесу.

Добавлено в версии 0.18.

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Входные образцы. Внутри dtype будет преобразован в dtype=np.float32. Если передана разреженная матрица, она будет преобразована в разреженную csr_matrix.

Возвращает:
indicatorsparse matrix of shape (n_samples, n_nodes)

Возвращает матрицу индикаторов узлов, в которой ненулевые элементы указывают, что образцы проходят через соответствующие узлы. Матрица имеет формат CSR.

n_nodes_ptrndarray of shape (n_estimators + 1,)

Столбцы indicator[n_nodes_ptr[i]:n_nodes_ptr[i+1]] содержат значения индикаторов для i-го оценивателя.

fit(X, y, sample_weight=None)[исходный код]

Построить лес деревьев на основе обучающего набора (X, y).

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Входные обучающие образцы. Внутри dtype будет преобразован в dtype=np.float32. Если передана разреженная матрица, она будет преобразована в разреженную csc_matrix.

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

Целевые значения (метки классов в задаче классификации, вещественные числа в задаче регрессии).

sample_weightarray-like of shape (n_samples,), default=None

Веса образцов. Если задано None, все образцы имеют одинаковый вес. При поиске разбиения в каждом узле игнорируются разбиения, создающие дочерние узлы с суммарным весом, равным нулю или отрицательным. В задаче классификации также игнорируются разбиения, в результате которых вес какого-либо отдельного класса в любом дочернем узле становится отрицательным.

Возвращает:
selfobject

Обученный оцениватель.

get_metadata_routing()[исходный код]

Получить сведения о маршрутизации метаданных этого объекта.

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

Возвращает:
routingMetadataRequest

Объект MetadataRequest, содержащий сведения о маршрутизации.

get_params(deep=True)[исходный код]

Получить параметры этого оценивателя.

Параметры:
deepbool, default=True

Если задано True, будут возвращены параметры этого оценивателя и содержащихся в нём объектов, которые являются оценивателями.

Возвращает:
paramsdict

Имена параметров, сопоставленные с их значениями.

predict(X)[исходный код]

Предсказать целевое значение регрессии для X.

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

Параметры:
X{array-like, sparse matrix} of shape (n_samples, n_features)

Входные образцы. Внутри dtype будет преобразован в dtype=np.float32. Если передана разреженная матрица, она будет преобразована в разреженную csr_matrix.

Возвращает:
yndarray of shape (n_samples,) or (n_samples, n_outputs)

Прогнозируемые значения.

score(X, y, sample_weight=None)[исходный код]

Вернуть коэффициент детерминации на тестовых данных.

Коэффициент детерминации \(R^2\) определяется как \((1 - \frac{u}{v})\), где \(u\) — остаточная сумма квадратов ((y_true - y_pred)** 2).sum(), а \(v\) — общая сумма квадратов ((y_true - y_true.mean()) ** 2).sum(). Наилучшая возможная оценка равна 1.0; она также может быть отрицательной (поскольку модель может быть сколь угодно хуже). Константная модель, всегда предсказывающая ожидаемое значение y и не учитывающая входные признаки, получит оценку \(R^2\), равную 0.0.

Параметры:
Xarray-like of shape (n_samples, n_features)

Тестовые образцы. Для некоторых оценивателей вместо этого может передаваться предварительно вычисленная матрица ядра или список объектов общего вида формы (n_samples, n_samples_fitted), где n_samples_fitted — количество образцов, использованных при обучении оценивателя.

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

Истинные значения для X.

sample_weightarray-like of shape (n_samples,), default=None

Веса образцов.

Возвращает:
scorefloat

Значение \(R^2\) для self.predict(X) относительно y.

Примечания

Оценка \(R^2\), используемая при вызове score для регрессора, начиная с версии 0.23 использует multioutput='uniform_average', чтобы соответствовать значению по умолчанию функции r2_score. Это влияет на метод score всех регрессоров с несколькими выходами (за исключением MultiOutputRegressor).

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → RandomForestRegressor[исходный код]

Настройте, следует ли запрашивать передачу метаданных методу fit.

Обратите внимание, что этот метод актуален только тогда, когда данный оценщик используется как подоценщик в составе метаоценщика и маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). О том, как работает механизм маршрутизации, см. Руководство пользователя.

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и передаются в fit, если они предоставлены. Если метаданные не предоставлены, запрос игнорируется.
  • False: метаданные не запрашиваются, и метаоценщик не будет передавать их в fit.
  • None: метаданные не запрашиваются, и метаоценщик выдаст ошибку, если пользователь их предоставит.
  • str: метаданные следует передавать метаоценщику под указанным псевдонимом, а не под исходным именем.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет текущий запрос. Это позволяет изменить запрос для одних параметров, не меняя его для остальных.

Добавлено в версии 1.3.

Параметры:
sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в fit.

Возвращает:
selfобъект

Обновлённый объект.

set_params(**params)[исходный код]

Задать параметры этого оценщика.

Метод работает как с простыми оценщиками, так и с вложенными объектами (например, Pipeline). Параметры последних имеют вид <component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.

Параметры:
**paramsdict

Параметры оценщика.

Возвращает:
selfэкземпляр оценщика

Экземпляр оценщика.

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → RandomForestRegressor[исходный код]

Настройте, следует ли запрашивать передачу метаданных методу score.

Обратите внимание, что этот метод актуален только тогда, когда данный оценщик используется как подоценщик в составе метаоценщика и маршрутизация метаданных включена с помощью enable_metadata_routing=True (см. sklearn.set_config). О том, как работает механизм маршрутизации, см. Руководство пользователя.

Для каждого параметра доступны следующие варианты:

  • True: метаданные запрашиваются и передаются в score, если они предоставлены. Если метаданные не предоставлены, запрос игнорируется.
  • False: метаданные не запрашиваются, и метаоценщик не будет передавать их в score.
  • None: метаданные не запрашиваются, и метаоценщик выдаст ошибку, если пользователь их предоставит.
  • str: метаданные следует передавать метаоценщику под указанным псевдонимом, а не под исходным именем.

Значение по умолчанию (sklearn.utils.metadata_routing.UNCHANGED) сохраняет текущий запрос. Это позволяет изменить запрос для одних параметров, не меняя его для остальных.

Добавлено в версии 1.3.

Параметры:
sample_weightstr, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

Маршрутизация метаданных для параметра sample_weight в score.

Возвращает:
selfобъект

Обновлённый объект.

Примеры из галереи

Задержка прогнозирования

Сравнение моделей случайного леса и гистограммного градиентного бустинга

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

Индивидуальные прогнозы регрессии и прогнозы регрессора голосования

Заполнение пропущенных значений с помощью вариантов IterativeImputer

Заполнение пропущенных значений перед созданием оценщика

Основные нововведения scikit-learn 0.24

Основные нововведения scikit-learn 1.4

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

Spec-Zone.ru

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