RandomForestClassifier#

класс sklearn.ensemble.RandomForestClassifier(n_estimators=100, *, критерий='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, по умолчанию=100

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

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

критерий{“gini”, “entropy”, “log_loss”}, по умолчанию=”gini”

Функция для измерения качества разделения. Поддерживаемые критерии: «gini» для примеси Джини и «log_loss» и «entropy» для прироста информации Шеннона, см. Математическая формулировка. Примечание: Этот параметр специфичен для дерева.

max_depthint, default=None

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

min_samples_splitint или float, по умолчанию=2

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

  • Если int, то рассматривать min_samples_split как минимальное число.

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

Изменено в версии 0.18: Добавлены дробные значения.

min_samples_leafint или float, по умолчанию=1

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

  • Если int, то рассматривать min_samples_leaf как минимальное число.

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

Изменено в версии 0.18: Добавлены дробные значения.

min_weight_fraction_leaffloat, по умолчанию=0.0

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

max_features{“sqrt”, “log2”, None}, int или float, по умолчанию=”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" to "sqrt".

Истинные (правильные) целевые значения. Требуется y_true > 0. max_features признаков.

max_leaf_nodesint, default=None

Выращивайте деревья с max_leaf_nodes в порядке лучшего первого. Лучшие узлы определяются как относительное снижение неоднородности. Если None, то неограниченное количество листовых узлов.

min_impurity_decreasefloat, по умолчанию=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, по умолчанию=True

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

oob_scorebool или 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 или None, по умолчанию=None

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

verboseint, по умолчанию=0

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

warm_startbool, по умолчанию=False

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

class_weight{“balanced”, “balanced_subsample”}, dict или list of dicts, default=None

Weights associated with classes in the form {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 (переданный через метод fit), если указан sample_weight.

ccp_alphaнеотрицательное число с плавающей точкой, default=0.0

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

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

max_samplesint или float, по умолчанию=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_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_список DecisionTreeClassifier

Коллекция обученных суб-оценщиков.

classes_ndarray формы (n_classes,) или список таких массивов

Метки классов (одновыходная задача) или список массивов меток классов (многовыходная задача).

n_classes_int или list

Количество классов (задача с одним выходом) или список, содержащий количество классов для каждого выхода (задача с несколькими выходами).

n_features_in_int

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

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

n_outputs_int

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

feature_importances_ndarray формы (n_features,)

Важность признаков на основе нечистоты.

oob_score_float

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

oob_decision_function_ndarray формы (n_samples, n_classes) или (n_samples, n_classes, n_outputs)

Функция решения, вычисленная с использованием оценки out-of-bag на обучающей выборке. Если n_estimators мало, возможно, что некоторые точки данных никогда не исключались при бутстрапе. В этом случае, oob_decision_function_ может содержать NaN. Этот атрибут существует только когда oob_score равно True.

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

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

Смотрите также

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} формы (n_samples, n_features)

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

Возвращает:
X_leavesndarray формы (n_samples, n_estimators)

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

decision_path(X)[источник]#

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

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

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

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

Возвращает:
индикаторразреженная матрица формы (n_samples, n_nodes)

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

n_nodes_ptrndarray формы (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} формы (n_samples, n_features)

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

yarray-like формы (n_samples,) или (n_samples, n_outputs)

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

sample_weightarray-like формы (n_samples,), по умолчанию=None

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

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

Обученный оценщик.

6332()[источник]#

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

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

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_params(глубокий=True)[источник]#

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

Параметры:
глубокийbool, по умолчанию=True

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

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

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

predict(X)[источник]#

Предсказать класс для X.

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

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

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

Возвращает:
yndarray формы (n_samples,) или (n_samples, n_outputs)

Предсказанные классы.

predict_log_proba(X)[источник]#

Предсказать логарифмы вероятностей классов для X.

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

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

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

Возвращает:
pndarray формы (n_samples, n_classes) или список таких массивов

Вероятности классов входных выборок. Порядок классов соответствует порядку в атрибуте classes_.

predict_proba(X)[источник]#

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

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

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

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

Возвращает:
pndarray формы (n_samples, n_classes) или список таких массивов

Вероятности классов входных выборок. Порядок классов соответствует порядку в атрибуте classes_.

score(X, y, sample_weight=None)[источник]#

Возвращает точность на предоставленных данных и метках.

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

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

Тестовые выборки.

yarray-like формы (n_samples,) или (n_samples, n_outputs)

Истинные метки для X.

sample_weightarray-like формы (n_samples,), по умолчанию=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 или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

set_params(**params)[источник]#

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

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

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

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

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

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

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 или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

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

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

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