КлассификаторДереваПринятияРешений
- 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: Добавлены значения с плавающей запятой для дробей.
- Если int, то рассматривается
- 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: Добавлены значения с плавающей запятой для дробей.
- Если int, то рассматривается
- 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признаков. - Если int, то рассматривается
- 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_.Ссылки
[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_path
Bunch -
Объект типа словаря, с указанными ниже атрибутами.
- ccp_alphasndarray
-
Эффективные альфы поддерева во время обрезки.
- impuritiesndarray
-
Сумма нечистот листьев поддерева для соответствующего значения альфа в
ccp_alphas.
-
ccp_path
- 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,)
-
Нормализованное полное уменьшение критерия по признакам (важность Джини).
- 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
-
MetadataRequestencapsulating 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
-
Обновленный объект.
-
Примеры из галереи
© 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