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]. - Если задано None (по умолчанию), выбираются
- 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 -
Подмножество выбранных образцов для каждого базового оценивателя.
-
estimator_
См. также
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].Ссылки
[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объект
-
Обновлённый объект.
-
Примеры из галереи
© 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