DecisionTreeClassifier
- classsklearn.tree.DecisionTreeClassifier(*, criterion='gini', 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, class_weight=None, ccp_alpha=0.0, monotonic_cst=None)[исходный код]
-
Классификатор на основе дерева решений.
Подробнее см. в Руководстве пользователя.
- Параметры:
-
- criterion{“gini”, “entropy”, “log_loss”}, по умолчанию=”gini”
-
Функция для измерения качества разбиения. Поддерживаются критерии “gini” для примеси Джини, а также “log_loss” и “entropy” для информационного выигрыша Шеннона; см. раздел Математическая формулировка.
- splitter{“best”, “random”}, по умолчанию=”best”
-
Стратегия, используемая для выбора разбиения в каждом узле. Поддерживаются стратегии “best” для выбора наилучшего разбиения и “random” для выбора наилучшего случайного разбиения.
- 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: Добавлена возможность задавать доли значениями float.
- Если задано значение 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: Добавлена возможность задавать доли значениями float.
- Если задано значение int, то
- min_weight_fraction_leaffloat, по умолчанию=0.0
-
Минимальная взвешенная доля суммы весов (всех входных образцов), необходимая для узла-листа. Если sample_weight не задан, все образцы имеют одинаковый вес.
- max_featuresint, float или {“sqrt”, “log2”}, по умолчанию=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признаков. - Если задано значение int, то при каждом разбиении рассматриваются
- random_stateint, экземпляр RandomState или None, по умолчанию=None
-
Управляет случайностью оценщика. Признаки всегда случайным образом переставляются при каждом разбиении, даже если
splitterзадано значение"best". Если заданоmax_features < n_features, алгоритм случайным образом выбираетmax_featuresпри каждом разбиении, а затем находит среди них наилучшее разбиение. Однако наилучшее найденное разбиение может различаться при разных запусках, даже еслиmax_features=n_features. Это происходит, если улучшение критерия одинаково для нескольких разбиений и одно из них нужно выбрать случайным образом. Чтобы обеспечить детерминированное поведение при обучении,random_stateдолжно быть фиксированным целым числом. Подробности см. в глоссарии. - max_leaf_nodesint, по умолчанию=None
-
Выращивать дерево с
max_leaf_nodesв порядке убывания приоритета. Наилучшие узлы определяются как относительное уменьшение примеси. Если задано None, количество листьев не ограничено. - 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.
- class_weightdict, список dict или “balanced”, по умолчанию=None
-
Веса, связанные с классами, в форме
{class_label: weight}. Если задано None, предполагается, что вес всех классов равен единице. Для задач с несколькими выходами можно передать список словарей в том же порядке, что и столбцы 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))Для задач с несколькими выходами веса для каждого столбца y перемножаются.
Обратите внимание: если задан sample_weight, эти веса будут перемножены с sample_weight (переданным через метод fit).
- ccp_alphaнеотрицательное значение float, по умолчанию=0.0
-
Параметр сложности, используемый для минимальной обрезки по критерию стоимости и сложности. Будет выбрано поддерево с наибольшей сложностью по критерию стоимости, меньшей
ccp_alpha. По умолчанию обрезка не выполняется. Подробности см. в разделе Минимальная обрезка по критерию стоимости и сложности. Пример такой обрезки см. в разделе Постобрезка деревьев решений методом обрезки по критерию стоимости и сложности.Добавлено в версии 0.22.
- monotonic_cstмассивоподобный объект типа int формы (n_features), по умолчанию=None
-
- Задает ограничение монотонности для каждого признака.
-
- 1: монотонное возрастание
- 0: без ограничений
- -1: монотонное убывание
Если monotonic_cst равен None, ограничения не применяются.
- Ограничения монотонности не поддерживаются для:
-
- классификации с несколькими классами (то есть когда
n_classes > 2), - классификации с несколькими выходами (то есть когда
n_outputs_ > 1).
- классификации с несколькими классами (то есть когда
Ограничения применяются к вероятности положительного класса.
Подробнее см. в Руководстве пользователя.
Добавлено в версии 1.4.
- Атрибуты:
-
- classes_ndarray формы (n_classes,) или список ndarray
-
Метки классов (задача с одним выходом) или список массивов с метками классов (задача с несколькими выходами).
-
feature_importances_ndarray формы (n_features,) -
Возвращает важность признаков.
- max_features_int
-
Выведенное значение max_features.
- n_classes_int или список int
-
Количество классов (для задач с одним выходом) или список, содержащий количество классов для каждого выхода (для задач с несколькими выходами).
- n_features_in_int
-
Количество признаков, полученных во время обучения.
Добавлено в версии 0.24.
-
feature_names_in_ndarray формы (
n_features_in_,) -
Имена признаков, полученные во время обучения. Определяется только в том случае, если
Xсодержит имена признаков, представленные строками.Добавлено в версии 1.0.
- n_outputs_int
-
Количество выходов при выполнении
fit. - tree_экземпляр Tree
-
Базовый объект Tree. Описание атрибутов объекта Tree см. в
help(sklearn.tree._tree.Tree), а базовые сведения об их использовании — в разделе Знакомство со структурой дерева решений.
См. также
DecisionTreeRegressor-
Регрессор на основе дерева решений.
Примечания
Значения параметров по умолчанию, управляющих размером деревьев (например,
max_depth,min_samples_leafи т. д.), приводят к построению полностью разросшихся и необрезанных деревьев, которые на некоторых наборах данных могут быть очень большими. Чтобы уменьшить потребление памяти, следует контролировать сложность и размер деревьев, задавая значения этих параметров.Метод
predictиспользует функциюnumpy.argmaxдля результатовpredict_proba. Это означает, что если наибольшие предсказанные вероятности совпадают, классификатор предскажет класс с наименьшим индексом среди совпавших в classes_.Литература
[2]L. Breiman, J. Friedman, R. Olshen и C. Stone, «Деревья классификации и регрессии», Wadsworth, Belmont, CA, 1984.
[3]T. Hastie, R. Tibshirani и J. Friedman. «Элементы статистического обучения», Springer, 2009.
[4]L. Breiman и A. Cutler, «Случайные леса», https://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm
Примеры
>>> from sklearn.datasets import load_iris >>> from sklearn.model_selection import cross_val_score >>> from sklearn.tree import DecisionTreeClassifier >>> clf = DecisionTreeClassifier(random_state=0) >>> iris = load_iris() >>> cross_val_score(clf, iris.data, iris.target, cv=10) ... ... array([ 1. , 0.93, 0.86, 0.93, 0.93, 0.93, 0.93, 1. , 0.93, 1. ])- apply(X, check_input=True)[исходный код]
-
Возвращает индекс листа, к которому относится предсказание для каждого образца.
Добавлено в версии 0.17.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Входные образцы. Внутри они будут преобразованы в
dtype=np.float32, а если передана разреженная матрица — в разреженнуюcsr_matrix. - check_inputbool, по умолчанию=True
-
Позволяет пропустить несколько проверок входных данных. Не используйте этот параметр, если не знаете, что делаете.
- Возвращает:
-
- X_leavesмассивоподобный объект формы (n_samples,)
-
Для каждой точки данных x в X возвращает индекс листа, в который попадает x. Нумерация листьев ведется в пределах
[0; self.tree_.node_count)и может содержать пропуски.
- cost_complexity_pruning_path(X, y, sample_weight=None)[исходный код]
-
Вычисляет путь обрезки при минимальной обрезке по критерию стоимости и сложности.
Подробнее о процессе обрезки см. в разделе Минимальная обрезка по критерию стоимости и сложности.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Обучающие входные образцы. Внутри они будут преобразованы в
dtype=np.float32, а если передана разреженная матрица — в разреженнуюcsc_matrix. - yмассивоподобный объект формы (n_samples,) или (n_samples, n_outputs)
-
Целевые значения (метки классов) в виде целых чисел или строк.
- sample_weightмассивоподобный объект формы (n_samples,), по умолчанию=None
-
Веса образцов. Если задано None, все образцы имеют одинаковый вес. При поиске разбиения в каждом узле игнорируются разбиения, которые создают дочерние узлы с нулевым или отрицательным суммарным весом. Также игнорируются разбиения, в результате которых вес какого-либо отдельного класса в любом дочернем узле становится отрицательным.
- Возвращает:
-
-
ccp_path
Bunch -
Объект, подобный словарю, со следующими атрибутами.
- ccp_alphasndarray
-
Эффективные значения alpha поддерева в процессе обрезки.
- impuritiesndarray
-
Сумма примесей листьев поддерева для соответствующего значения alpha в
ccp_alphas.
-
ccp_path
- decision_path(X, check_input=True)[исходный код]
-
Возвращает путь принятия решения в дереве.
Добавлено в версии 0.18.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Входные образцы. Внутри они будут преобразованы в
dtype=np.float32, а если передана разреженная матрица — в разреженнуюcsr_matrix. - check_inputbool, по умолчанию=True
-
Позволяет пропустить несколько проверок входных данных. Не используйте этот параметр, если не знаете, что делаете.
- Возвращает:
-
- indicatorразреженная матрица формы (n_samples, n_nodes)
-
Возвращает разреженную матрицу CSR-индикаторов узлов, в которой ненулевые элементы показывают, что образцы проходят через соответствующие узлы.
- fit(X, y, sample_weight=None, check_input=True)[исходный код]
-
Строит классификатор на основе дерева решений по обучающей выборке (X, y).
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Обучающие входные образцы. Внутри они будут преобразованы в
dtype=np.float32, а если передана разреженная матрица — в разреженнуюcsc_matrix. - yмассивоподобный объект формы (n_samples,) или (n_samples, n_outputs)
-
Целевые значения (метки классов) в виде целых чисел или строк.
- sample_weightмассивоподобный объект формы (n_samples,), по умолчанию=None
-
Веса образцов. Если задано None, все образцы имеют одинаковый вес. При поиске разбиения в каждом узле игнорируются разбиения, которые создают дочерние узлы с нулевым или отрицательным суммарным весом. Также игнорируются разбиения, в результате которых вес какого-либо отдельного класса в любом дочернем узле становится отрицательным.
- check_inputbool, по умолчанию=True
-
Позволяет пропустить несколько проверок входных данных. Не используйте этот параметр, если не знаете, что делаете.
- Возвращает:
-
- selfDecisionTreeClassifier
-
Обученный оценщик.
- get_depth()[исходный код]
-
Возвращает глубину дерева решений.
Глубина дерева — это максимальное расстояние между корнем и любым листом.
- Возвращает:
-
- self.tree_.max_depthint
-
Максимальная глубина дерева.
- get_metadata_routing()[исходный код]
-
Возвращает правила маршрутизации метаданных этого объекта.
О том, как работает механизм маршрутизации, см. в Руководстве пользователя.
- Возвращает:
-
- routingMetadataRequest
-
MetadataRequest, содержащий сведения о маршрутизации.
- get_n_leaves()[исходный код]
-
Возвращает количество листьев дерева решений.
- Возвращает:
-
- self.tree_.n_leavesint
-
Количество листьев.
- get_params(deep=True)[исходный код]
-
Возвращает параметры этого оценщика.
- Параметры:
-
- deepbool, по умолчанию=True
-
Если True, возвращает параметры этого оценщика и содержащихся в нем подобъектов, являющихся оценщиками.
- Возвращает:
-
- paramsdict
-
Имена параметров, сопоставленные их значениям.
- predict(X, check_input=True)[исходный код]
-
Предсказывает класс или значение регрессии для X.
Для модели классификации возвращается предсказанный класс для каждого образца в X. Для модели регрессии возвращается предсказанное значение на основе X.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Входные образцы. Внутри они будут преобразованы в
dtype=np.float32, а если передана разреженная матрица — в разреженнуюcsr_matrix. - check_inputbool, по умолчанию=True
-
Позволяет пропустить несколько проверок входных данных. Не используйте этот параметр, если не знаете, что делаете.
- Возвращает:
-
- yмассивоподобный объект формы (n_samples,) или (n_samples, n_outputs)
-
Предсказанные классы или значения предсказания.
- predict_log_proba(X)[исходный код]
-
Предсказывает логарифмы вероятностей классов для входных образцов X.
- Параметры:
-
- X{массивоподобный объект, разреженная матрица} формы (n_samples, n_features)
-
Входные образцы. Внутри они будут преобразованы в
dtype=np.float32, а если передана разреженная матрица — в разреженнуюcsr_matrix.
- Возвращает:
-
- probandarray формы (n_samples, n_classes) или список из n_outputs таких массивов, если n_outputs > 1
-
Логарифмы вероятностей классов для входных образцов. Порядок классов соответствует порядку в атрибуте classes_.
- predict_proba(X, check_input=True)[исходный код]
-
Предсказать вероятности классов для входных образцов X.
Предсказанная вероятность класса — это доля образцов того же класса в листе.
- Параметры:
-
- X{array-like, sparse matrix} of shape (n_samples, n_features)
-
Входные образцы. Внутри они будут преобразованы в
dtype=np.float32, а если передана разреженная матрица — в разреженнуюcsr_matrix. - check_inputbool, default=True
-
Разрешить пропустить несколько проверок входных данных. Не используйте этот параметр, если не знаете, что делаете.
- Возвращает:
-
- probandarray of shape (n_samples, n_classes) or list of n_outputs such arrays if n_outputs > 1
-
Вероятности классов для входных образцов. Порядок классов соответствует порядку в атрибуте classes_.
- score(X, y, sample_weight=None)[исходный код]
-
Возвращает точность на предоставленных данных и метках.
В задаче классификации с несколькими метками это точность по подмножеству. Это строгая метрика, поскольку для каждого образца требуется правильно предсказать весь набор меток.
- Параметры:
-
- Xarray-like of shape (n_samples, n_features)
-
Тестовые образцы.
- yarray-like of shape (n_samples,) or (n_samples, n_outputs)
-
Истинные метки для
X. - sample_weightarray-like of shape (n_samples,), default=None
-
Веса образцов.
- Возвращает:
-
- scorefloat
-
Средняя точность
self.predict(X)относительноy.
- set_fit_request(*, sample_weight:bool|None|str='$UNCHANGED$') DecisionTreeClassifier[исходный код]
-
Настраивает, следует ли запрашивать передачу метаданных методу
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$') DecisionTreeClassifier[исходный код]
-
Настраивает, следует ли запрашивать передачу метаданных методу
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.DecisionTreeClassifier.html