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: Добавлены значения с плавающей точкой для дробей.
- Если int, то рассматривается
- min_samples_leafint или float, по умолчанию=1
-
Минимальное количество образцов, необходимых для того, чтобы находиться в листе. Точка разбиения на любой глубине будет рассматриваться только в том случае, если она оставит не менее
min_samples_leafобучающих образцов в каждом из левого и правого ветвей. Это может иметь эффект сглаживания модели, особенно в регрессии.- Если int, то рассматривается
min_samples_leafкак минимальное число. - Если float, то
min_samples_leafявляется дробью, иceil(min_samples_leaf * n_samples)— минимальное число образцов для каждого узла.
Изменено в версии 0.18: Добавлены значения с плавающей точкой для дробей.
- Если int, то рассматривается
- 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признаков. - Если int, то рассматривается
- 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.
- Если None (по умолчанию), то извлечь
- 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_список массивов -
Подмножество выбранных образцов для каждого базового оценщика.
-
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должен быть фиксированным.Ссылки
[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объект
-
Обновлённый объект.
-
Примеры из галереи
© 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