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)[source]

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

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

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

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

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

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

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

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

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

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

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

max_depthint, default=None

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

min_samples_splitint or float, default=2

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

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

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

min_samples_leafint or float, default=1

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

  • Если int, то рассмотреть min_samples_leaf как минимальное количество.
  • Если float, то 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

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

  • Если 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.

Примечание

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

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

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

max_leaf_nodesint, default=None

Выращивать деревья с max_leaf_nodes в режиме «лучшее-сначала». Лучшие узлы определяются как относительное уменьшение неопределенности.

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.

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_alphaнеотрицательное число с плавающей точкой, default=0.0

Параметр сложности, используемый для минимальной обрезки по стоимости-сложности. Поддерево с наибольшей сложностью стоимости, меньшей чем ccp_alpha, будет выбрано. По умолчанию обрезка не выполняется. См. Минимальная обрезка по стоимости-сложности для получения подробной информации. См. Постобработка деревьев решений с обрезкой по стоимости-сложности для примера такой обрезки.

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

max_samplesint or float, default=None

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

  • Если None (значение по умолчанию), то извлечь X.shape[0] образцов.
  • Если int, то извлечь max_samples образцов.
  • Если float, то извлечь max(round(n_samples * max_samples), 1) образцов. Таким образом, max_samples должно находиться в интервале (0.0, 1.0].

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

monotonic_cstмассив-подобный int формы (n_features), default=None
Указывает монотонное ограничение, которое необходимо применить к каждому признаку.
  • 1: монотонно возрастающий
  • 0: нет ограничений
  • -1: монотонно убывающий

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

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

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

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

Атрибуты:
estimator_DecisionTreeRegressor

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

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

estimators_список DecisionTreeRegressor

Коллекция подгоняемых подмножеств-оценщиков.

feature_importances_массив с формой (n_features,)

Важности признаков, основанные на ошибках.

n_features_in_int

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

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

feature_names_in_массив с формой (n_features_in_,)

Имена признаков, увиденные во время fit. Определены только тогда, когда X имеет имена признаков, которые все являются строками.

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

n_outputs_int

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

oob_score_float

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

oob_prediction_массив с формой (n_samples,) или (n_samples, n_outputs)

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

estimators_samples_список массивов

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

См. также

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]
  1. Breiman, «Случайные леса», Машинное обучение, 45(1), 5-32, 2001.
[2]

P. Geurts, D. Ernst., и L. Wehenkel, «Экстремально случайные деревья», Машинное обучение, 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)[source]

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

Параметры:
X{массив-подобный, разреженная матрица} с формой (n_samples, n_features)

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

Возвращает:
X_leavesмассив с формой (n_samples, n_estimators)

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

decision_path(X)[source]

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

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

Параметры:
X{массив-подобный, разреженная матрица} с формой (n_samples, n_features)

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

Возвращает:
indicatorразреженная матрица с формой (n_samples, n_nodes)

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

n_nodes_ptrмассив с формой (n_estimators + 1,)

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

свойствоestimators_samples_

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

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

Примечание: список пересоздается при каждом обращении к свойству для уменьшения занимаемой объектом памяти за счет того, что данные выборки не сохраняются. Таким образом, получение свойства может быть медленнее, чем ожидалось.

свойствоfeature_importances_

Важности признаков, основанные на ошибках.

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

Предупреждение: важности признаков, основанные на ошибках, могут вводить в заблуждение для признаков с высокой кардинальностью (много уникальных значений). См. sklearn.inspection.permutation_importance как альтернативу.

Возвращает:
feature_importances_массив с формой (n_features,)

Значения этого массива суммируются до 1, если все деревья являются деревьями с одним узлом, состоящими только из корневого узла, в этом случае это будет массив нулей.

fit(X, y, sample_weight=None)[source]

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

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

Входные обучающие образцы. Внутри его тип данных будет преобразован в 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()[source]

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

Пожалуйста, ознакомьтесь с Руководством пользователя о том, как работает механизм маршрутизации.

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

А MetadataRequest encapsulating маршрутизацию информации.

get_params(deep=True)[source]

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

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

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

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

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

predict(X)[source]

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

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

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

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

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

Предсказанные значения.

score(X, y, sample_weight=None)[source]

Возвращает коэффициент детерминации предсказания.

Коэффициент детерминации \(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 для оценщика регрессии, использует multioutput='uniform_average' с версии 0.23, чтобы сохранить согласованность со значением по умолчанию для r2_score. Это влияет на score метод всех оценщиков многовыходной регрессии (за исключением MultiOutputRegressor).

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → RandomForestRegressor[source]

Запрос метаданных, переданных в метод fit.

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

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

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

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

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

Примечание

Этот метод актуален только в том случае, если данный оценщик используется как под-оценщик мета-оценщика, например, внутри Pipeline. В противном случае он не оказывает влияния.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

Returns:
selfobject

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

set_params(**params)[source]

Устанавливает параметры данного оценщика.

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

Parameters:
**paramsdict

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

Returns:
selfestimator instance

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

set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') → RandomForestRegressor[source]

Запрос метаданных, переданных в метод score.

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

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

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

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

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

Примечание

Этот метод актуален только в том случае, если данный оценщик используется как под-оценщик мета-оценщика, например, внутри Pipeline. В противном случае он не оказывает влияния.

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

Returns:
selfobject

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

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

Основные моменты выпуска scikit-learn 1.4

Основные моменты выпуска scikit-learn 0.24

Объединение предикторов с использованием стекинга

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

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

График индивидуальных и прогнозов голосового регрессора

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

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

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

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

Spec-Zone.ru

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