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

Классификатор случайного леса.

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

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

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

Параметры:
n_estimatorsint, по умолчанию=100

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

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

criterion{“gini”, “entropy”, “log_loss”}, по умолчанию=”gini”

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

max_depthint, по умолчанию=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" до "sqrt".

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

max_leaf_nodesint, по умолчанию=None

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

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

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

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

Использовать ли образцы за пределами выборки для оценки обобщающей оценки. По умолчанию используется accuracy_score. Укажите вызываемый объект с сигнатурой metric(y_true, y_pred) для использования пользовательской метрики. Доступно только если bootstrap=True.

n_jobsint, по умолчанию=None

Количество задач, которые необходимо запустить параллельно. fit, predict, decision_path и apply все выполняются параллельно по деревьям. None означает 1, за исключением контекста joblib.parallel_backend. -1 означает использование всех процессоров. См. Глоссарий для получения дополнительной информации.

random_stateint, экземпляр RandomState или None, по умолчанию=None

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

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

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

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

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

class_weight{“balanced”, “balanced_subsample”}, dict или список словарей, по умолчанию=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”, за исключением того, что веса вычисляются на основе bootstrap-выборки для каждого выращенного дерева.

Для задач с несколькими выходами веса каждого столбца y будут умножаться.

Обратите внимание, что эти веса будут умножены на sample_weight (переданный через метод fit), если sample_weight указан.

ccp_alphaнеотрицательное число с плавающей точкой, по умолчанию=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_cstмассив-подобный int формы (n_features), по умолчанию=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_массив формы (n_classes,) или список таких массивов

Метки классов (проблема с одним выходом) или список массивов меток классов (проблема с несколькими выходами).

n_classes_целое число или список

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

n_features_in_целое число

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

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

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

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

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

n_outputs_целое число

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

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

Значения важности признаков, основанные на критериях неопределённости.

oob_score_вещественное число

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

oob_decision_function_массив формы (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 должен быть фиксированным.

Ссылки

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

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

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

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

propertyfeature_importances_

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

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

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

Возвращает:
feature_importances_ndarray of shape (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 , инкапсулирующий информацию о маршрутизации.

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)

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

predict_log_proba(X)[source]

Предсказать логарифмические вероятности класса для 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)[source]

Предсказать вероятности класса для 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)[source]

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

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

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

Тестовые образцы.

yмассив-подобный формы (n_samples,) или (n_samples, n_outputs)

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

sample_weightмассив-подобный формы (n_samples,), по умолчанию=None

Веса образцов.

Возвращаемые значения:
scorefloat

Средняя точность self.predict(X) по отношению к y.

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

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

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

Варианты для каждого параметра:

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

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

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

Примечание

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

Параметры:
sample_weightстрока, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

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

Возвращаемые значения:
selfобъект

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

set_params(**params)[source]

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

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

Параметры:
**paramsсловарь

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

Возвращаемые значения:
selfэкземпляр оценщика

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

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

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

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

Варианты для каждого параметра:

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

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

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

Примечание

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

Параметры:
sample_weightстрока, True, False или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

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

Возвращаемые значения:
selfобъект

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

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

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

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

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

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

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

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

Индуктивное кластерирование

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

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

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

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

График вероятностей классов, вычисленный VotingClassifier

Графики поверхностей решений ансамблей деревьев на наборе данных iris

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

Важность перестановки с многоколлинеарными или коррелированными признаками

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

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

Кривая компромисса «поиск ошибок обнаружения»

Итерации поэтапного удвоения

Классификация текстовых документов с использованием разреженных признаков

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

Spec-Zone.ru

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