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и т. д.), приводят к построению полностью разросшихся и необрезанных деревьев, которые на некоторых наборах данных могут быть очень большими. Чтобы уменьшить потребление памяти, следует управлять сложностью и размером деревьев, задавая значения этих параметров.Литература
[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_path
Bunch -
Объект, подобный словарю, со следующими атрибутами.
- ccp_alphasndarray
-
Эффективные значения alpha поддерева в процессе обрезки.
- impuritiesndarray
-
Сумма неоднородностей листьев поддерева для соответствующего значения alpha в
ccp_alphas.
-
ccp_path
- 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
-
Обновлённый объект.
-
Примеры из галереи
© 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