sklearn.tree
.DecisionTreeClassifier¶
- class sklearn.tree.DecisionTreeClassifier¶
Un clasificador de árbol de decisiones.
Lee más en el Manual de usuario.
- Parámetros
- criterion{«gini», «entropy»}, default=»gini»
La función de medir la calidad de una división, los criterios soportados son «gini» para la impureza de Gini y «entropy» para la ganancia de información.
- splitter{«best», «random»}, default=»best»
La estrategia utilizada para elegir la división en cada nodo. Las estrategias apoyadas son «best» para elegir la mejor división y «random» para elegir la mejor división aleatoria.
- max_depthentero, default=None
La profundidad máxima del árbol. Si None, entonces los nodos se expanden hasta que todas las hojas sean puras o hasta que todas contengan menos que min_samples_split muestras.
- min_samples_splitentero o flotante, default=2
El número mínimo de muestras requeridas para dividir un nodo interno:
Si es entero, entonces considera
min_samples_split
como el número mínimo.Si float, entonces
min_samples_split
es una fracción yceil(min_samples_split * n_samples)
son el número mínimo de muestras para cada división.
Distinto en la versión 0.18: Se añadieron valores flotantes para las fracciones.
- min_samples_leafentero o punto flotante, default=1
El número mínimo de muestras requeridas para estar en un nodo de hoja. Un punto dividido a cualquier profundidad sólo se considerará si deja al menos
min_samples_leaf
muestras de entrenamiento en cada una de las ramas izquierda y derecha. Esto puede tener el efecto de suavizar el modelo, especialmente en regresión.Si es entero, entonces considera
min_samples_split
como el número mínimo.Si es flotante, entonces
min_samples_leaf
es una fracción yceil(min_samples_leaf * n_samples)
son el número mínimo de muestras para cada nodo.
Distinto en la versión 0.18: Se añadieron valores flotantes para las fracciones.
- min_weight_fraction_leafflotante, default=0.0
La fracción mínima ponderada de la suma total de las ponderaciones (de todas las muestras de entrada) requeridas para estar en un nodo de hoja. Las muestras tienen la misma ponderación cuando no se proporciona sample_weight.
- max_featuresint, float or {«auto», «sqrt», «log2»}, default=None
El número de características a tener en cuenta cuando se busca la mejor división:
Si es int, entonces considera las características
max_features
en cada división.Si es float, entonces
max_features
es una fracción y las característicasint(max_features * n_features)
son consideradas en cada división.Si es «auto», entonces
max_features=sqrt(n_features)
.Si es «sqrt», entonces
max_features=sqrt(n_features)
.Si es «log2», entonces
max_features=log2(n_features)
.Si es None, entonces
max_features=n_features
.
Nota: la búsqueda de una división no se detiene hasta que se encuentre al menos una partición válida de las muestras de nodos, incluso si requiere inspeccionar eficazmente más de las características de
max_features
.- random_stateentero, instancia de RandomState o None, por defecto=None
Controla la aleatoriedad del estimador. Las características siempre son aleatoriamente permutadas en cada división, incluso si
splitter
es establecido a"best"
. Cuandomax_features < n_features
, el algoritmo seleccionarámax_features
aleatoriamente en cada división antes de encontrar la mejor división entre ellos. Pero la mejor división encontrada podría variar a lo largo de diferentes ejecuciones, incluso símax_features=n_features
. Ese es el caso, si la mejoría del criterio es idéntica para numerosas divisiones y una división tiene que ser seleccionada aleatoriamente. Para obtener un comportamiento determinístico durante el ajuste,random_state
debe ser fijado a un entero. Ver el Glosario para más detalles.- max_leaf_nodesentero, default=None
Hace crecer un árbol con
max_leaf_nodes
en modo best-first. Los mejores nodos se definen como una reducción relativa de la impureza. Si es None, el número de nodos hoja es ilimitado.- min_impurity_decreaseflotante, default=0.0
Un nodo se dividirá si esta división induce una disminución de la impureza mayor o igual a este valor.
La ecuación de disminución de impureza ponderada es la siguiente:
N_t / N * (impurity - N_t_R / N_t * right_impurity - N_t_L / N_t * left_impurity)
donde
N
es el número total de muestras,N_t
es el número de muestras en el nodo actual,N_t_L
es el número de muestras en el hijo izquierdo, yN_t_R
es el número de muestras en el hijo derecho.N
,N_t
,N_t_R
yN_t_L
se refieren a la suma ponderada, sisample_weight
es pasada.Nuevo en la versión 0.19.
- min_impurity_splitfloat, default=0
El umbral para la parada anticipada en el crecimiento de árboles. Un nodo se dividirá si su impureza está por encima del umbral, de lo contrario será una hoja.
Obsoleto desde la versión 0.19:
min_impurity_split
ha sido obviado en favor demin_impurity_decrease
en 0.19. El valor predeterminado demin_impurity_split
ha cambiado de 1e-7 a 0 en 0.23 y se eliminará en 1.0 (renombrado de 0.25). Usemin_impurity_decrease
en su lugar.- class_weightdict, list of dict o «balanced», default=None
Ponderaciones asociadas a las clases de la forma
{class_label: weight}
. Si es None, se supone que todas las clases tienen ponderación uno. Para los problemas de salida múltiple, se puede proporcionar una lista de dicts en el mismo orden que las columnas de y.Ten en cuenta que para la salida múltiple (incluyendo la multietiqueta) las ponderaciones deben ser definidas para cada clase de cada columna en su propio diccionario. Por ejemplo, para la clasificación multietiqueta de cuatro clases las ponderaciones deben ser [{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}] en lugar de [{1:1}, {2:5}, {3:1}, {4:1}].
El modo «balanced» utiliza los valores de y para ajustar automáticamente las ponderaciones inversamente proporcionales a las frecuencias de clase en los datos de entrada como
n_samples / (n_classes * np.bincount(y))
Para multisalida, las ponderaciones de cada columna de y se multiplicarán.
Ten en cuenta que estas ponderaciones serán multiplicadas con sample_weight (pasadas por el método de ajuste) si se especifica sample_weight.
- ccp_alphafloat no negativo, default=0.0
Parámetro de complejidad utilizado para la Poda de Mínima Complejidad de Costo. El subárbol con la complejidad de costo mayor que sea menor que
ccp_alpha
será elegido. Por defecto, no se realiza ninguna poda. Ver Poda de Coste-Complejidad Mínima para más detalles.Nuevo en la versión 0.22.
- Atributos
- classes_ndarray de forma (n_classes,) o lista de ndarray
Las etiquetas de clases (problema de salida única), o una lista de arreglos de etiquetas de clase (problema de multi-salida).
feature_importances_
ndarray de forma (n_features,)Devuelve la importancia de las características.
- max_features_entero
El valor inferido de max_features.
- n_classes_int o lista de int
El número de clases (para problemas de salida única), o una lista que contiene el número de clases para cada salida (para problemas de salida múltiple).
- n_features_entero
El número de características cuando
fit
es realizado.- n_outputs_entero
El número de salidas cuando se realiza
fit
.- tree_Instancia del árbol
El objeto Tree subyacente. Por favor, consulte
help(sklearn.tree._tree.Tree)
para obtener los atributos del objeto Tree y Comprensión de la estructura del árbol de decisiones para el uso básico de estos atributos.
Ver también
DecisionTreeRegressor
Un regresor de árbol de decisión.
Notas
Los valores predeterminados de los parámetros que controlan el tamaño de los árboles (por ejemplo,
`max_depth
,min_samples_leaf
, etc.) conducen a árboles completamente desarrollados y sin podar que pueden ser potencialmente muy grandes en algunos conjuntos de datos. Para reducir el consumo de memoria, la complejidad y el tamaño de los árboles deben controlarse estableciendo los valores de esos parámetros.El método
predict
opera usando la funciónnumpy.argmax
en las salidas depredict_proba
. Esto significa que en caso de que las mayores probabilidades predichas estén atadas, el clasificador predirá la clase vinculada con el índice más bajo en classes_.Referencias
- 1
- 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
Ejemplos
>>> 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. ])
Métodos
Devuelve el índice de la hoja en la que se predice cada muestra.
Calcula la ruta de poda durante la Poda de Mínima Complejidad de costes.
Devuelve la ruta de decisión en el árbol.
Construye un clasificador de árbol de decisión a partir del conjunto de entrenamiento (X, y).
Devuelve la profundidad del árbol de decisión.
Devuelve el número de hojas del árbol de decisión.
Obtiene los parámetros para este estimador.
Predice la clase de regresión para X.
Predice las log-probabilidades de clase de las muestras de entrada X.
Predice las probabilidades de clase de las muestras de entrada X.
Devuelve la precisión media en los datos y etiquetas de prueba dados.
Establece los parámetros de este estimador.
- apply()¶
Devuelve el índice de la hoja en la que se predice cada muestra.
Nuevo en la versión 0.17.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Las muestras de entrada. Internamente, se convertirá a
dtype=np.float32
y si se proporciona una matriz dispersa se convertirá a una dispersacsr_matrix
.- check_inputbooleano, default=True
Permite omitir varias comprobaciones de entrada. No uses este parámetro a menos que sepas lo que haces.
- Devuelve
- X_leavesarray-like de forma (n_samples,)
Para cada punto de datos x en X, devuelve el índice de la hoja en la que termina x. Las hojas se numeran dentro de
[0; self.tree_.node_count)
, posiblemente con huecos en la numeración.
- cost_complexity_pruning_path()¶
Calcula la ruta de poda durante la Poda de Mínima Complejidad de costes.
Ver Poda de Coste-Complejidad Mínima for details on the pruning process.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Las muestras de entrada de entrenamiento. Internamente, se convertirán a
dtype=np.float32
y si se proporciona una matriz dispersa a unacsc_matrix
dispersa.- yarray-like de forma (n_samples,) o (n_samples, n_outputs)
Los valores destino (etiquetas de clase) como enteros o cadenas.
- sample_weightarray-like de forma (n_samples,) default=None
Ponderación de las muestras. Si es None, las muestras se ponderan por igual. Las divisiones que crearían nodos hijos con peso neto cero o negativo se ignoran al buscar una división en cada nodo. Las divisiones también se ignoran si dan lugar a que una sola clase tenga un peso negativo en cualquiera de los nodos hijos.
- Devuelve
- ccp_path
Bunch
Objeto tipo diccionario, con los siguientes atributos.
- ccp_alphasndarray
Alfas efectivos del subárbol durante la poda.
- impurezasndarray
Suma de las impurezas de las hojas del subárbol para el valor alfa correspondiente en
ccp_alphas
.
- ccp_path
- decision_path()¶
Devuelve la ruta de decisión en el árbol.
Nuevo en la versión 0.18.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Las muestras de entrada. Internamente, se convertirá a
dtype=np.float32
y si se proporciona una matriz dispersa se convertirá a una dispersacsr_matrix
.- check_inputbooleano, default=True
Permite omitir varias comprobaciones de entrada. No uses este parámetro a menos que sepas lo que haces.
- Devuelve
- indicatormatriz dispersa de forma (n_samples, n_nodes)
Devuelve una matriz CSR indicadora de nodos donde los elementos distintos de cero indican que las muestras pasan por los nodos.
- property feature_importances_¶
Devuelve la importancia de las características.
La importancia de una característica se calcula como la reducción total (normalizada) del criterio traído por esa función. También se le conoce como la importancia de Gini.
Advertencia: las importancias de características basadas en la impureza pueden ser no representativas para las características de alta cardinalidad (muchos valores únicos). Ver
sklearn.inspection.permutation_importance
como una alternativa.- Devuelve
- feature_importances_ndarray de forma (n_features,)
Reducción total normalizada del criterio por función (importancia Gini).
- fit()¶
Construye un clasificador de árbol de decisión a partir del conjunto de entrenamiento (X, y).
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Las muestras de entrada de entrenamiento. Internamente, se convertirán a
dtype=np.float32
y si se proporciona una matriz dispersa a unacsc_matrix
dispersa.- yarray-like de forma (n_samples,) o (n_samples, n_outputs)
Los valores destino (etiquetas de clase) como enteros o cadenas.
- sample_weightarray-like de forma (n_samples,) default=None
Ponderación de las muestras. Si es None, las muestras se ponderan por igual. Las divisiones que crearían nodos hijos con peso neto cero o negativo se ignoran al buscar una división en cada nodo. Las divisiones también se ignoran si dan lugar a que una sola clase tenga un peso negativo en cualquiera de los nodos hijos.
- check_inputbooleano, default=True
Permite omitir varias comprobaciones de entrada. No uses este parámetro a menos que sepas lo que haces.
- X_idx_sortedobsoleto, default=»deprecated»
Este atributo está obsoleto y no tiene ningún efecto. Se eliminará en 1.1 (cambio de nombre de 0.26).
Obsoleto desde la versión 0.24.
- Devuelve
- selfDecisionTreeClassifier
Estimador ajustado.
- get_depth()¶
Devuelve la profundidad del árbol de decisión.
La profundidad de un árbol es la distancia máxima entre la raíz y cualquier hoja.
- Devuelve
- self.tree_.max_depthentero
La profundidad máxima del árbol.
- get_n_leaves()¶
Devuelve el número de hojas del árbol de decisión.
- Devuelve
- self.tree_.n_leavesentero
Número de hojas.
- get_params()¶
Obtiene los parámetros para este estimador.
- Parámetros
- deepbooleano, default=True
Si es True, devolverá los parámetros para este estimador y los sub objetos contenidos que son estimadores.
- Devuelve
- paramsdict
Nombres de parámetros mapeados a sus valores.
- predict()¶
Predice la clase de regresión para X.
Para un modelo de clasificación, se devuelve la clase predicha para cada muestra en X. Para un modelo de regresión, se devuelve el valor predicho basado en X.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Las muestras de entrada. Internamente, se convertirá a
dtype=np.float32
y si se proporciona una matriz dispersa se convertirá a una dispersacsr_matrix
.- check_inputbooleano, default=True
Permite omitir varias comprobaciones de entrada. No uses este parámetro a menos que sepas lo que haces.
- Devuelve
- yarray-like de forma (n_samples,) o (n_samples, n_outputs)
Las clases predichas, o los valores predichos.
- predict_log_proba()¶
Predice las log-probabilidades de clase de las muestras de entrada X.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Las muestras de entrada. Internamente, se convertirá a
dtype=np.float32
y si se proporciona una matriz dispersa se convertirá a una dispersacsr_matrix
.
- Devuelve
- probandarray de forma (n_samples, n_classes), o una lista de n_outputs tales arreglos sí n_outputs > 1
Las log-probabilidades de clase de las muestras de entrada. El orden de las clases corresponde a aquel en el atributo classes_.
- predict_proba()¶
Predice las probabilidades de clase de las muestras de entrada X.
La probabilidad predicha de clase es la fracción de muestras de la misma clase en una hoja.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Las muestras de entrada. Internamente, se convertirá a
dtype=np.float32
y si se proporciona una matriz dispersa se convertirá a una dispersacsr_matrix
.- check_inputbooleano, default=True
Permite omitir varias comprobaciones de entrada. No uses este parámetro a menos que sepas lo que haces.
- Devuelve
- probandarray de forma (n_samples, n_classes), o una lista de n_outputs tales arreglos sí n_outputs > 1
Las probabilidades de clase de las muestras de entrada. El orden de las clases corresponde a aquel en el atributo classes_.
- score()¶
Devuelve la precisión media en los datos y etiquetas de prueba dados.
En la clasificación multietiqueta, se trata de la precisión del subconjunto, que es una métrica rigurosa, ya que se requiere para cada muestra que cada conjunto de etiquetas sea predicho correctamente.
- Parámetros
- Xarray-like de forma (n_samples_X, n_features)
Muestras de prueba.
- yarray-like de forma (n_samples,) o (n_samples, n_outputs)
Etiquetas True para
X
.- sample_weightarray-like de forma (n_samples,) default=None
Ponderaciones de la muestra.
- Devuelve
- scorede punto flotante (float)
Precisión media de
self.predict(X)
con respecto ay
.
- set_params()¶
Establece los parámetros de este estimador.
El método funciona tanto con estimadores simples como en objetos anidados (como
Pipeline
). Estos últimos tienen parámetros de la forma<component>__<parameter>
para que sea posible actualizar cada componente de un objeto anidado.- Parámetros
- **paramsdict
Parámetros del estimador.
- Devuelve
- selfinstancia del estimador
Instancia de estimador.