Spec-Zone.ru › scikit-learn

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 для задания долей.

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 для задания долей.

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 признаков.

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].

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

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

См. также

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.

Ссылки

[1]

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

Примеры

>>> 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

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

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

Калибровка вероятностей для классификации на 3 класса

Сравнение калибровки классификаторов

Сравнение классификаторов

Индуктивная кластеризация

Ошибки OOB для случайных лесов

Преобразование признаков с помощью ансамблей деревьев

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

Важность признаков в лесу деревьев

Построение поверхностей решений ансамблей деревьев на наборе данных ирисов

Перестановочная важность и важность признаков случайного леса (MDI)

Перестановочная важность при мультиколлинеарных или коррелирующих признаках

Отображение конвейеров

ROC-кривая с API визуализации

Кривая компромисса между обнаружением и ошибкой (DET)

Итерации последовательного отсечения

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

Основные нововведения 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.RandomForestClassifier.html

Spec-Zone.ru

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