Spec-Zone.ru › scikit-learn

КлассификаторДереваПринятияРешений

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

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

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

Параметры:
criterion{“gini”, “entropy”, “log_loss”}, default=”gini”

Функция для измерения качества разбиения. Поддерживаемые критерии — “gini” для критерия Джини и “log_loss” и “entropy” для информационного выигрыша Шеннона, см. Математическая формулировка.

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

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

max_depthint, default=None

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

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.

class_weightdict, list of dict or “balanced”, default=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 (переданным через метод fit), если sample_weight указан.

ccp_alphaнеотрицательное число с плавающей точкой, default=0.0

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

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

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

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

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

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

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

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

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

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

feature_importances_массив ndarray формы (n_features,)

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

max_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_экземпляр дерева

Основной объект дерева. Обратитесь к 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, and C. Stone, “Classification and Regression Trees”, Wadsworth, Belmont, CA, 1984.

[3]

T. Hastie, R. Tibshirani and 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)[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)

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

propertyfeature_importances_

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

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

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

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

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

END_OF_DOCUMENT_MARKER
fit(X, y, sample_weight=None, check_input=True)[source]

Постройте классификатор дерева решений на основе обучающего набора (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()[source]

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

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

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

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

get_metadata_routing()[source]

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

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

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

MetadataRequest encapsulating routing information.

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, sparse matrix} формы (n_samples, n_features)

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

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

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

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

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

predict_log_proba(X)[source]

Предсказать логарифмы вероятностей классов входных образцов 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)[source]

Предсказать вероятности классов для входных образцов 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)[source]

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

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

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

Запрашивает метаданные, переданные методу fit.

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

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

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

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

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

Примечание

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

Параметры:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

set_params(**params)[source]

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

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

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

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

Возвращает:
selfestimator instance

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

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

Запрашивает метаданные, переданные методу score.

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

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

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

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

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

Примечание

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

Параметры:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

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

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

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

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

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

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

Обрезка деревьев решений с обрезкой по сложности затрат

Понимание структуры дерева решений

Деревья решений AdaBoost для многоклассовой классификации

Построение границ решений VotingClassifier

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

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

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

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

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

Spec-Zone.ru

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