DecisionTreeClassifier#

класс sklearn.tree.DecisionTreeClassifier(*, критерий='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)[источник]#

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

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

Параметры:
критерий{“gini”, “entropy”, “log_loss”}, по умолчанию=”gini”

Функция для измерения качества разделения. Поддерживаемые критерии: «gini» для примеси Джини и «log_loss» и «entropy» для прироста информации Шеннона, см. Математическая формулировка.

splitter{“best”, “random”}, по умолчанию=”best”

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

max_depthint, default=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: Добавлены дробные значения.

min_samples_leafint или float, по умолчанию=1

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

  • Если int, то рассматривать min_samples_leaf как минимальное число.

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

Изменено в версии 0.18: Добавлены дробные значения.

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, default=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, list of dict или “balanced”, по умолчанию=None

Weights associated with classes in the form {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 (переданный через метод fit), если указан sample_weight.

ccp_alphaнеотрицательное число с плавающей точкой, 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_classes > 2),

  • многомерных классификаций (т.е. когда n_outputs_ > 1),

  • Классификации, обученные на данных с пропущенными значениями.

Ограничения выполняются для вероятности положительного класса.

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

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

Атрибуты:
classes_ndarray формы (n_classes,) или список ndarray

Метки классов (одновыходная задача), или список массивов меток классов (многовыходная задача).

feature_importances_ndarray формы (n_features,)

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

Представление вероятностного распределения гауссовской смеси. Этот класс позволяет оценивать параметры распределения гауссовской смеси.int

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

n_classes_int или список int

Количество классов (для задач с одним выходом) или список, содержащий количество классов для каждого выхода (для задач с несколькими выходами).

n_features_in_int

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

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

feature_names_in_ndarray формы (n_features_in_,)

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

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

n_outputs_int

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

tree_Экземпляр дерева

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

Смотрите также

DecisionTreeRegressor

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

Примечания

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

The predict метод работает с использованием numpy.argmax функция на выходных данных predict_proba. Это означает, что в случае, если самые высокие предсказанные вероятности равны, классификатор предскажет связанный класс с наименьшим индексом в classes_.

Ссылки

[2]

L. Breiman, J. Friedman, R. Olshen и C. Stone, «Classification and Regression Trees», Wadsworth, Belmont, CA, 1984.

[3]

T. Hastie, R. Tibshirani и J. Friedman. "Elements of Statistical Learning", Springer, 2009.

[4]

L. Breiman, and A. Cutler, “Random Forests”, 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{array-like, sparse matrix} формы (n_samples, n_features)

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

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

Позволяет обойти несколько проверок ввода. Не используйте этот параметр, если не знаете, что делаете.

Возвращает:
X_leavesarray-like формы (n_samples,)

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

cost_complexity_pruning_path(X, y, sample_weight=None)[источник]#

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

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

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

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

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

Целевые значения (метки классов) в виде целых чисел или строк.

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

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

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

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

ccp_alphasndarray

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

impuritiesndarray

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

decision_path(X, check_input=True)[источник]#

Вернуть путь принятия решений в дереве.

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

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

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

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

Позволяет обойти несколько проверок ввода. Не используйте этот параметр, если не знаете, что делаете.

Возвращает:
индикаторразреженная матрица формы (n_samples, n_nodes)

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

fit(X, y, sample_weight=None, check_input=True)[источник]#

Построить дерево решений-классификатор из обучающего набора (X, y).

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

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

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

Целевые значения (метки классов) в виде целых чисел или строк.

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

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

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

Позволяет обойти несколько проверок ввода. Не используйте этот параметр, если не знаете, что делаете.

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

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

get_depth()[источник]#

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

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

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

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

6332()[источник]#

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

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

Возвращает:
маршрутизацияMetadataRequest

A MetadataRequest Инкапсуляция информации о маршрутизации.

get_n_leaves()[источник]#

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

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

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

get_params(глубокий=True)[источник]#

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

Параметры:
глубокийbool, по умолчанию=True

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

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

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

predict(X, check_input=True)[источник]#

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

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

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

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

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

Позволяет обойти несколько проверок ввода. Не используйте этот параметр, если не знаете, что делаете.

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

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

predict_log_proba(X)[источник]#

Предсказывает логарифмы вероятностей классов для входных выборок X.

Параметры:
X{array-like, sparse matrix} формы (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} формы (n_samples, n_features)

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

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

Позволяет обойти несколько проверок ввода. Не используйте этот параметр, если не знаете, что делаете.

Возвращает:
probandarray формы (n_samples, n_classes) или список из n_outputs таких массивов, если n_outputs > 1

Вероятности классов входных выборок. Порядок классов соответствует порядку в атрибуте classes_.

score(X, y, sample_weight=None)[источник]#

Возвращает точность на предоставленных данных и метках.

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

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

Тестовые выборки.

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

Истинные метки для X.

sample_weightarray-like формы (n_samples,), по умолчанию=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 или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

set_params(**params)[источник]#

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

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

Параметры:
**paramsdict

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

Возвращает:
selfэкземпляр estimator

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

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 или None, по умолчанию=sklearn.utils.metadata_routing.UNCHANGED

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

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

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