Spec-Zone.ru › scikit-learn

DecisionTreeRegressor

classsklearn.tree.DecisionTreeRegressor(*, criterion='squared_error', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, ccp_alpha=0.0, monotonic_cst=None)[исходный код]

Регрессор на основе дерева решений.

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

Параметры:
criterion{“squared_error”, “absolute_error”, “poisson”}, default=”squared_error”

Функция для измерения качества разбиения. Поддерживаются следующие критерии: “squared_error” — среднеквадратичная ошибка, которая эквивалентна уменьшению дисперсии при выборе признаков и минимизирует потери L2, используя среднее значение в каждом конечном узле; “absolute_error” — средняя абсолютная ошибка, которая минимизирует потери L1, используя медиану каждого конечного узла; “poisson” использует уменьшение девианса Пуассона для поиска разбиений, также используя среднее значение каждого конечного узла.

Добавлено в версии 0.18: Критерий средней абсолютной ошибки (MAE).

Добавлено в версии 0.24: Критерий девианса Пуассона.

Изменено в версии 1.9: Критерий "friedman_mse" устарел.

splitter{“best”, “random”}, default=”best”

Стратегия выбора разбиения в каждом узле. Поддерживаются стратегии “best” для выбора наилучшего разбиения и “random” для выбора наилучшего случайного разбиения.

max_depthint, default=None

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

Пример влияния max_depth на модель см. в разделе Регрессия с помощью дерева решений.

min_samples_splitint or float, default=2

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

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

Изменено в версии 0.18: Добавлена поддержка значений с плавающей точкой для долей.

min_samples_leafint or float, default=1

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

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

Изменено в версии 0.18: Добавлена поддержка значений с плавающей точкой для долей.

min_weight_fraction_leaffloat, default=0.0

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

max_featuresint, float or {“sqrt”, “log2”}, default=None

Количество признаков, рассматриваемых при поиске наилучшего разбиения:

  • Если задано целое число, при каждом разбиении рассматриваются max_features признаков.
  • Если задано число с плавающей точкой, 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.

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

random_stateint, RandomState instance or None, default=None

Управляет случайностью оценщика. Признаки всегда случайным образом переставляются при каждом разбиении, даже если splitter установлено в "best". Если задано max_features < n_features, алгоритм будет случайным образом выбирать max_features при каждом разбиении, прежде чем найти среди них наилучшее разбиение. Однако наилучшее найденное разбиение может различаться при разных запусках, даже если задано max_features=n_features. Это происходит, если улучшение критерия одинаково для нескольких разбиений и одно из них нужно выбрать случайным образом. Чтобы обеспечить детерминированное поведение при обучении, random_state необходимо задать целым числом. Подробности см. в Глоссарии.

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.

ccp_alphanon-negative float, default=0.0

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

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

monotonic_cstarray-like of int of shape (n_features), default=None
Задает ограничение монотонности, применяемое к каждому признаку.
  • 1: монотонное возрастание
  • 0: без ограничений
  • -1: монотонное убывание

Если monotonic_cst равен None, ограничения не применяются.

Ограничения монотонности не поддерживаются для:
  • регрессий с несколькими выходами (то есть когда n_outputs_ > 1).

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

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

Атрибуты:
feature_importances_ndarray of shape (n_features,)

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

max_features_int

Выведенное значение max_features.

n_features_in_int

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

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

feature_names_in_ndarray of shape (n_features_in_,)

Названия признаков, обнаруженных во время обучения. Определяется только в том случае, если X содержит названия признаков, представленные строками.

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

n_outputs_int

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

tree_Tree instance

Базовый объект Tree. Список атрибутов объекта Tree см. в help(sklearn.tree._tree.Tree), а сведения об их использовании — в разделе Изучение структуры дерева решений.

См. также

DecisionTreeClassifier

Классификатор на основе дерева решений.

Примечания

Значения параметров по умолчанию, управляющих размером деревьев (например, max_depth, min_samples_leaf и т. д.), приводят к построению полностью разросшихся и необрезанных деревьев, которые на некоторых наборах данных могут быть очень большими. Чтобы уменьшить потребление памяти, следует управлять сложностью и размером деревьев, задавая значения этих параметров.

Литература

[1]

https://en.wikipedia.org/wiki/Decision_tree_learning

[2]

Л. Брейман, Дж. Фридман, Р. Олшен и Ч. Стоун, «Деревья классификации и регрессии», Wadsworth, Белмонт, Калифорния, 1984.

[3]

Т. Хасти, Р. Тибширани и Дж. Фридман. «Элементы статистического обучения», Springer, 2009.

[4]

Л. Брейман и А. Катлер, «Случайные леса», https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm

Примеры

>>> from sklearn.datasets import load_diabetes
>>> from sklearn.model_selection import cross_val_score
>>> from sklearn.tree import DecisionTreeRegressor
>>> X, y = load_diabetes(return_X_y=True)
>>> regressor = DecisionTreeRegressor(random_state=0)
>>> cross_val_score(regressor, X, y, cv=10)
...
...
array([-0.39, -0.46,  0.02,  0.06, -0.50,
       0.16,  0.11, -0.73, -0.30, -0.00])
apply(X, check_input=True)[исходный код]

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

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

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

Входные образцы. Внутренне данные будут преобразованы в dtype=np.float32, а разреженная матрица — в разреженный csr_matrix.

check_inputbool, default=True

Разрешает пропустить несколько проверок входных данных. Не используйте этот параметр, если не знаете, что делаете.

Возвращает:
X_leavesarray-like of shape (n_samples,)

Для каждой точки данных x в X возвращает индекс листа, в который попадает x. Нумерация листьев выполняется в пределах [0; self.tree_.node_count) и может содержать пропуски.

cost_complexity_pruning_path(X, y, sample_weight=None)[исходный код]

Вычисляет путь обрезки при минимальной обрезке по критерию стоимости и сложности.

Подробности процесса обрезки см. в разделе Минимальная обрезка по критерию стоимости и сложности.

Параметры:
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, все образцы имеют одинаковый вес. При поиске разбиения в каждом узле игнорируются разбиения, которые создают дочерние узлы с нулевым или отрицательным суммарным весом. Также игнорируются разбиения, при которых вес какого-либо отдельного класса в любом из дочерних узлов становится отрицательным.

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

Объект, подобный словарю, со следующими атрибутами.

ccp_alphasndarray

Эффективные значения alpha поддерева в процессе обрезки.

impuritiesndarray

Сумма неоднородностей листьев поддерева для соответствующего значения alpha в ccp_alphas.

decision_path(X, check_input=True)[исходный код]

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

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

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

Входные образцы. Внутренне данные будут преобразованы в dtype=np.float32, а разреженная матрица — в разреженный csr_matrix.

check_inputbool, default=True

Разрешает пропустить несколько проверок входных данных. Не используйте этот параметр, если не знаете, что делаете.

Возвращает:
indicatorsparse matrix of shape (n_samples, n_nodes)

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

fit(X, y, sample_weight=None, check_input=True)[исходный код]

Строит регрессор на основе дерева решений по обучающему набору (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)

Целевые значения (вещественные числа). Для максимальной эффективности используйте dtype=np.float64 и order='C'.

sample_weightarray-like of shape (n_samples,), default=None

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

check_inputbool, default=True

Разрешает пропустить несколько проверок входных данных. Не используйте этот параметр, если не знаете, что делаете.

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

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

get_depth()[исходный код]

Возвращает глубину дерева решений.

Глубина дерева — это максимальное расстояние от корня до любого листа.

Возвращает:
self.tree_.max_depthint

Максимальная глубина дерева.

get_metadata_routing()[исходный код]

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

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

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

Объект MetadataRequest, содержащий сведения о маршрутизации.

get_n_leaves()[исходный код]

Возвращает количество листьев дерева решений.

Возвращает:
self.tree_.n_leavesint

Количество листьев.

get_params(deep=True)[исходный код]

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

Параметры:
deepbool, default=True

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

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

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

predict(X, check_input=True)[исходный код]

Предсказывает класс или значение регрессии для X.

Для модели классификации возвращается предсказанный класс для каждого образца в X. Для модели регрессии возвращается предсказанное значение на основе X.

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

Входные образцы. Внутренне данные будут преобразованы в dtype=np.float32, а разреженная матрица — в разреженный csr_matrix.

check_inputbool, default=True

Разрешает пропустить несколько проверок входных данных. Не используйте этот параметр, если не знаете, что делаете.

Возвращает:
yarray-like of shape (n_samples,) or (n_samples, n_outputs)

Предсказанные классы или значения прогноза.

score(X, y, sample_weight=None)[исходный код]

Возвращает коэффициент детерминации на тестовых данных.

Коэффициент детерминации \(R^2\) определяется как \((1 - \frac{u}{v})\), где \(u\) — сумма квадратов остатков ((y_true - y_pred)** 2).sum(), а \(v\) — общая сумма квадратов ((y_true - y_true.mean()) ** 2).sum(). Наилучшее возможное значение оценки — 1.0; оценка может быть отрицательной (так как модель может быть сколь угодно хуже). Постоянная модель, всегда предсказывающая ожидаемое значение y без учета входных признаков, получила бы оценку \(R^2\), равную 0.0.

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

Тестовые образцы. Для некоторых оценщиков вместо этого может использоваться предварительно вычисленная матрица ядра или список обобщенных объектов с формой (n_samples, n_samples_fitted), где n_samples_fitted — количество образцов, использованных при обучении оценщика.

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

Истинные значения для X.

sample_weightarray-like of shape (n_samples,), default=None

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

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

Значение \(R^2\) для self.predict(X) относительно y.

Примечания

Оценка \(R^2\), используемая при вызове score для регрессора, с версии 0.23 использует multioutput='uniform_average' для согласования со значением по умолчанию r2_score. Это влияет на метод score всех регрессоров с несколькими выходами (за исключением MultiOutputRegressor).

set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') → DecisionTreeRegressor[исходный код]

Настройте, следует ли запрашивать передачу метаданных методу 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$') → DecisionTreeRegressor[исходный код]

Настройте, следует ли запрашивать передачу метаданных методу 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

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

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

Регрессия с помощью дерева решений и AdaBoost

Отдельный оценщик и бэггинг: разложение на смещение и дисперсию

Расширенные графики с частичной зависимостью

Дискретизация непрерывных признаков с помощью KBinsDiscretizer

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

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

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

Регрессия с помощью дерева решений

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.tree.DecisionTreeRegressor.html

Spec-Zone.ru

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