Spec-Zone.ru › scikit-learn

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.

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.

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 признаков.

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_.

Литература

[1]

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

[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_pathBunch

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

ccp_alphasndarray

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

impuritiesndarray

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

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

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

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

Сравнение классификаторов

Деревья решений AdaBoost для нескольких классов

AdaBoost для двух классов

Поверхности решений ансамблей деревьев на наборе данных ирисов

Демонстрация оценки по нескольким метрикам с cross_val_score и GridSearchCV

Обзор метаоценивателей для обучения с несколькими классами

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

Построение деревьев решений с последующей обрезкой с учетом сложности модели

Поверхности решений деревьев решений, обученных на наборе данных ирисов

Изучение структуры дерева решений

© 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

Spec-Zone.ru

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