RandomForestClassifier
- classsklearn.ensemble.RandomForestClassifier(n_estimators=100, *, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='sqrt', 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, class_weight=None, ccp_alpha=0.0, max_samples=None, monotonic_cst=None)[исходный код]
-
Классификатор на основе случайного леса.
Случайный лес — это метаоцениватель, который обучает несколько классификаторов на основе деревьев решений на различных подвыборках набора данных и использует усреднение для повышения точности прогнозирования и контроля переобучения. Деревья в лесу используют стратегию наилучшего разбиения, то есть эквивалентную передаче
splitter="best"базовомуDecisionTreeClassifier. Размер подвыборки задаётся параметромmax_samples, еслиbootstrap=True(по умолчанию); в противном случае для построения каждого дерева используется весь набор данных.Сравнение ансамблевых моделей на основе деревьев см. в примере Сравнение моделей случайного леса и гистограммного градиентного бустинга.
Этот оцениватель изначально поддерживает пропущенные значения (NaN). Во время обучения алгоритм построения дерева в каждой точке разбиения определяет, в какой дочерний узел — левый или правый — следует направить образцы с пропущенными значениями, основываясь на потенциальном выигрыше. При прогнозировании образцы с пропущенными значениями соответственно направляются в левый или правый дочерний узел. Если при обучении для заданного признака не встречались пропущенные значения, образцы с пропущенными значениями направляются в тот дочерний узел, в котором больше всего образцов.
Подробнее см. в Руководстве пользователя.
- Параметры:
-
- n_estimatorsint, default=100
-
Количество деревьев в лесу.
Изменено в версии 0.22: Значение параметра
n_estimatorsпо умолчанию изменено с 10 на 100 в версии 0.22. - criterion{“gini”, “entropy”, “log_loss”}, default=”gini”
-
Функция для измерения качества разбиения. Поддерживаются критерии “gini” для нечистоты Джини, а также “log_loss” и “entropy” для информационного выигрыша Шеннона; см. Математическая формулировка. Примечание: этот параметр относится к конкретному дереву.
- 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: Добавлены значения float для задания долей.
- Если задано int, то
- 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: Добавлены значения float для задания долей.
- Если задано int, то
- min_weight_fraction_leaffloat, default=0.0
-
Минимальная взвешенная доля от общей суммы весов (всех входных образцов), необходимая для узла-листа. Если sample_weight не задан, все образцы имеют одинаковый вес.
- max_features{“sqrt”, “log2”, None}, int or float, default=”sqrt”
-
Количество признаков, рассматриваемых при поиске наилучшего разбиения:
- Если задано 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, то
max_features=n_features.
Изменено в версии 1.1: Значение параметра
max_featuresпо умолчанию изменено с"auto"на"sqrt".Примечание: поиск разбиения продолжается, пока не будет найдено хотя бы одно допустимое разбиение образцов узла, даже если для этого фактически потребуется проверить более
max_featuresпризнаков. - Если задано int, то при каждом разбиении рассматриваются
- 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
-
Использовать ли вневыборочные образцы для оценки обобщающей способности. По умолчанию используется
accuracy_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 и в ансамбль добавляются новые оцениватели; в противном случае обучается совершенно новый лес. Подробнее см. в Глоссарии и разделе Дополнительное обучение деревьев. - class_weight{“balanced”, “balanced_subsample”}, dict or list of dicts, default=None
-
Веса классов в формате
{class_label: weight}. Если параметр не задан, предполагается, что вес всех классов равен единице. Для задач с несколькими выходами можно передать список словарей в том же порядке, что и столбцы y.Обратите внимание: для задач с несколькими выходами (включая многометочную классификацию) веса следует задавать для каждого класса каждого столбца в отдельном словаре. Например, для многометочной классификации с четырьмя классами следует использовать [{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}], а не [{1:1}, {2:5}, {3:1}, {4:1}].
Режим “balanced” использует значения y для автоматической настройки весов, обратно пропорциональных частотам классов во входных данных, по формуле
n_samples / (n_classes * np.bincount(y))Режим “balanced_subsample” аналогичен “balanced”, но веса вычисляются на основе бутстрэп-выборки для каждого построенного дерева.
Для нескольких выходов веса каждого столбца y перемножаются.
Если задан sample_weight, эти веса будут перемножены с sample_weight (передаваемым через метод 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. - Если задано int, извлекаются
max_samplesобразцы. - Если задано float, извлекаются
max_samples * X.shape[0]невзвешенных образцов илиmax_samples * sample_weight.sum()взвешенных образцов.
Добавлено в версии 0.22.
Изменено в версии 1.9: Для взвешенных образцов значение float
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_classes > 2), - классификации с несколькими выходами (то есть когда
n_outputs_ > 1).
- многоклассовой классификации (то есть когда
Ограничения применяются к вероятности положительного класса.
Подробнее см. в Руководстве пользователя.
Добавлено в версии 1.4.
- Атрибуты:
-
-
estimator_
DecisionTreeClassifier -
Шаблон дочернего оценивателя, используемый для создания коллекции обученных подоценивателей.
Добавлено в версии 1.2:
base_estimator_переименован вestimator_. - estimators_list of DecisionTreeClassifier
-
Коллекция обученных подоценивателей.
- classes_ndarray of shape (n_classes,) or a list of such arrays
-
Метки классов (задача с одним выходом) или список массивов с метками классов (задача с несколькими выходами).
- n_classes_int or list
-
Количество классов (задача с одним выходом) или список, содержащий количество классов для каждого выхода (задача с несколькими выходами).
- n_features_in_int
-
Количество признаков, обнаруженных при вызове fit.
Добавлено в версии 0.24.
-
feature_names_in_ndarray of shape (
n_features_in_,) -
Названия признаков, обнаруженных при вызове fit. Определяется только в том случае, если
Xсодержит названия признаков, представленные строками.Добавлено в версии 1.0.
- n_outputs_int
-
Количество выходов при выполнении
fit. -
feature_importances_ndarray of shape (n_features,) -
Важность признаков, основанная на нечистоте.
- oob_score_float
-
Оценка обучающего набора, полученная с использованием вневыборочной оценки. Этот атрибут существует только если
oob_scoreимеет значение True. - oob_decision_function_ndarray of shape (n_samples, n_classes) or (n_samples, n_classes, n_outputs)
-
Функция принятия решений, вычисленная для обучающего набора с использованием вневыборочной оценки. Если n_estimators мало, возможно, что точка данных ни разу не попадёт за пределы бутстрэп-выборки. В этом случае
oob_decision_function_может содержать NaN. Этот атрибут существует только еслиoob_scoreимеет значение True. -
estimators_samples_list of arrays -
Подмножество выбранных образцов для каждого базового оценивателя.
-
estimator_
См. также
sklearn.tree.DecisionTreeClassifier-
Классификатор на основе дерева решений.
sklearn.ensemble.ExtraTreesClassifier-
Ансамбль классификаторов на основе экстремально рандомизированных деревьев.
sklearn.ensemble.HistGradientBoostingClassifier-
Дерево классификации с гистограммным градиентным бустингом, очень быстрое на больших наборах данных (n_samples >= 10_000).
Примечания
Значения по умолчанию для параметров, управляющих размером деревьев (например,
max_depth,min_samples_leafи т. д.), приводят к построению полностью разросшихся и необрезанных деревьев, которые в некоторых наборах данных могут быть очень большими. Чтобы уменьшить потребление памяти, следует контролировать сложность и размер деревьев, задавая значения этих параметров.При каждом разбиении признаки всегда перемешиваются в случайном порядке. Поэтому найденное наилучшее разбиение может меняться даже при одинаковых обучающих данных,
max_features=n_featuresиbootstrap=False, если при поиске наилучшего разбиения для нескольких разбиений наблюдается одинаковое улучшение критерия. Чтобы поведение при обучении было детерминированным, необходимо зафиксироватьrandom_state.Ссылки
Примеры
>>> from sklearn.ensemble import RandomForestClassifier >>> from sklearn.datasets import make_classification >>> X, y = make_classification(n_samples=1000, n_features=4, ... n_informative=2, n_redundant=0, ... random_state=0, shuffle=False) >>> clf = RandomForestClassifier(max_depth=2, random_state=0) >>> clf.fit(X, y) RandomForestClassifier(...) >>> print(clf.predict([[0, 0, 0, 0]])) [1]
- apply(X)[исходный код]
-
Применяет деревья леса к X и возвращает индексы листьев.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Входные образцы. Внутренний тип данных будет преобразован в
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=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=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=np.float32. Если передана разреженная матрица, она будет преобразована в разреженную матрицуcsr_matrix.
- Возвращает:
-
- yndarray of shape (n_samples,) or (n_samples, n_outputs)
-
Предсказанные классы.
- predict_log_proba(X)[исходный код]
-
Прогнозирует логарифмы вероятностей классов для X.
Логарифмы вероятностей классов для входного образца вычисляются как логарифмы средних предсказанных вероятностей классов деревьев в лесу.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Входные образцы. Внутренний тип данных будет преобразован в
dtype=np.float32. Если передана разреженная матрица, она будет преобразована в разреженную матрицуcsr_matrix.
- Возвращает:
-
- pndarray of shape (n_samples, n_classes), or a list of such arrays
-
Вероятности классов для входных образцов. Порядок классов соответствует порядку в атрибуте classes_.
- predict_proba(X)[исходный код]
-
Предсказать вероятности классов для X.
Предсказанные вероятности классов для входного образца вычисляются как среднее значение предсказанных вероятностей классов деревьями в лесу. Вероятность класса для отдельного дерева — это доля образцов того же класса в листе.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Входные образцы. Внутренне тип данных будет преобразован в
dtype=np.float32. Если передана разреженная матрица, она будет преобразована в разреженнуюcsr_matrix.
- Возвращает:
-
- pndarray of shape (n_samples, n_classes), or a list of such arrays
-
Вероятности классов для входных образцов. Порядок классов соответствует порядку в атрибуте classes_.
- score(X, y, sample_weight=None)[исходный код]
-
Вернуть точность на предоставленных данных и метках.
В многометочной классификации это точность по подмножеству — строгая метрика, поскольку для каждого образца требуется правильно предсказать весь набор меток.
- Параметры:
-
- Xarray-like of shape (n_samples, n_features)
-
Тестовые образцы.
- yarray-like of shape (n_samples,) or (n_samples, n_outputs)
-
Истинные метки для
X. - sample_weightarray-like of shape (n_samples,), default=None
-
Веса образцов.
- Возвращает:
-
- scorefloat
-
Средняя точность
self.predict(X)относительноy.
- set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') RandomForestClassifier[исходный код]
-
Настроить, следует ли запрашивать передачу метаданных методу
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, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвfit.
- Возвращает:
-
- selfobject
-
Обновлённый объект.
-
- set_params(**params)[исходный код]
-
Задать параметры этого оценивателя.
Метод работает как с простыми оценивателями, так и с вложенными объектами (например,
Pipeline). У последних параметры имеют вид<component>__<parameter>, что позволяет обновлять каждый компонент вложенного объекта.- Параметры:
-
- **paramsdict
-
Параметры оценивателя.
- Возвращает:
-
- selfestimator instance
-
Экземпляр оценивателя.
- set_score_request(*, sample_weight:bool|None|str='$UNCHANGED$') RandomForestClassifier[исходный код]
-
Настроить, следует ли запрашивать передачу метаданных методу
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, or None, default=sklearn.utils.metadata_routing.UNCHANGED
-
Маршрутизация метаданных для параметра
sample_weightвscore.
- Возвращает:
-
- selfobject
-
Обновлённый объект.
-
Примеры из галереи
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.ensemble.RandomForestClassifier.html