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

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

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

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

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

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

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

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

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

max_depthint, default=None

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

Пример того, как max_depth влияет на модель, см. в Регрессия дерева решений.

min_samples_splitint or float, default=2

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

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

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

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: Добавлены значения с плавающей точкой для дробей.

min_weight_fraction_leaffloat, default=0.0

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

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

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

  • Если 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.

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

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

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

monotonic_cstмассив-подобный int формы (n_features), по умолчанию None
Указывает ограничение монотонности для каждого признака.
  • 1: монотонный рост
  • 0: без ограничения
  • -1: монотонное убывание

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

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

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

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

Атрибуты:
feature_importances_массив ndarray формы (n_features,)

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

max_features_int

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

n_features_in_int

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

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

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

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

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

n_outputs_int

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

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

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

Добавлен в версии 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)[source]

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

См. Минимальная обрезка с учетом стоимости и сложности для получения подробной информации о процессе обрезки.

Параметры:
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

Эффективные альфы поддерева во время обрезки.

impuritiesndarray

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

decision_path(X, check_input=True)[source]

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

Добавлен в версии 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)

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

propertyfeature_importances_

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

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

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

Возвращает:
feature_importances_ndarray of shape (n_features,)

Нормализованное общее уменьшение критерия по признаку (важность Джини).

fit(X, y, sample_weight=None, check_input=True)[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)

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

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

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

check_inputbool, default=True

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

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

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

get_depth()[source]

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

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

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

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

get_metadata_routing()[source]

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

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

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

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

get_n_leaves()[source]

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

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

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

get_params(deep=True)[source]

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

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

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

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

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

predict(X, check_input=True)[source]

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

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

Параметры:
X{array-like, разреженная матрица} формы (n_samples, n_features)

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

check_inputbool, по умолчанию=True

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

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

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

score(X, y, sample_weight=None)[source]

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

Коэффициент детерминации \(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 формы (n_samples, n_features)

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

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

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

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

Веса выборок.

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

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

Примечания

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

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

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

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

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

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

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

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

Примечание

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

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

Returns:
selfobject

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

set_params(**params)[source]

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

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

Parameters:
**paramsdict

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

Returns:
selfэкземпляр оценщика

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

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

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

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

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

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

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

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

Примечание

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

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

Returns:
selfobject

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

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

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

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

Дерево решений для регрессии

Дерево решений для регрессии с AdaBoost

Один оценщик против bagging: разложение смещения-дисперсии

Расширенное построение с частичной зависимостью

Использование KBinsDiscretizer для дискретизации непрерывных признаков

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

Spec-Zone.ru

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