sklearn.tree.ExtraTreeClassifier

class sklearn.tree.ExtraTreeClassifier

Un clasificador de árboles extremadamente aleatorio.

Los extra-árboles difieren de los árboles de decisión clásicos en la forma en que se construyen. Cuando se busca la mejor división para separar las muestras de un nodo en dos grupos, se dibujan divisiones aleatorias para cada una de las características seleccionadas aleatoriamente max_features y se elige la mejor división entre ellas. Cuando max_features se fija en 1, esto equivale a construir un árbol de decisión totalmente aleatorio.

Advertencia: Los extra-árboles sólo deben utilizarse dentro de los métodos de conjunto.

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{«random», «best»}, default=»random»

La estrategia utilizada para elegir la separación en cada nodo. Las estrategias soportadas son «best» para elegir la mejor separación y «random» para elegir la mejor separación aleatoria.

max_depthint, default=None

La profundidad máxima del árbol. Si es None, entonces los nodos se expanden hasta que todas las hojas sean puras o hasta que todas contengan menos de min_samples_split muestras.

min_samples_splitint o float, default=2

El número mínimo de muestras requeridas para dividir un nodo interno:

  • Si int, entonces considera min_samples_split como el número mínimo.

  • Si es float, entonces min_samples_split es una fracción y ceil(min_samples_split * n_samples) es el número mínimo de muestras para cada división.

Distinto en la versión 0.18: Se han añadido valores de punto flotante (float) para las fracciones.

min_samples_leafint o float, 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 int, entonces considera min_samples_leaf como el número mínimo.

  • Si float, entonces min_samples_leaf es una fracción y ceil(min_samples_leaf * n_samples) son el número mínimo de muestras para cada nodo.

Distinto en la versión 0.18: Se han añadido valores de punto flotante (float) para las fracciones.

min_weight_fraction_leaffloat, 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, {«auto», «sqrt», «log2»} o None, default=»auto»

El número de características a tener en cuenta cuando se busca la mejor división:

  • Si es int, entonces considere las características max_features en cada división.

  • Si es float, entonces max_features es una fracción y las características int(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_stateint, instancia de RandomState o None, default=None

Se utiliza para elegir aleatoriamente el max_features utilizado en cada separación. Ver Glosario para más detalles.

max_leaf_nodesint, default=None

Crece un árbol con max_leaf_nodes en modo el mejor primero. Los mejores nodos se definen como la reducción relativa de la impureza. Si es None, el número de nodos hoja es ilimitado.

min_impurity_decreasefloat, 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, y N_t_R es el número de muestras en el hijo derecho.

N, N_t, N_t_R y N_t_L se refieren a la suma ponderada, si se pasa sample_weight.

Nuevo en la versión 0.19.

min_impurity_splitfloat, default=None

Umbral para la parada anticipada del crecimiento del árbol. Un nodo se dividirá si su impureza está por encima del umbral, de lo contrario es una hoja.

Obsoleto desde la versión 0.19: El valor de min_impurity_split ha quedado obsoleto en favor de min_impurity_decrease en 0.19. El valor por defecto de min_impurity_split ha cambiado de 1e-7 a 0 en 0.23 y se eliminará en 1.0 (cambio de nombre de 0.25). Utiliza min_impurity_decrease en su lugar.

class_weightdict, list of dict o «balanced», default=None

Pesos asociados a las clases de la forma {class_label: weight}. Si es None, se supone que todas las clases tienen peso 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 salida múltiple (incluyendo 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 debe 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 la salida múltiple, 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_alphapunto flotante (float) no negativo, default=0.0

Parámetro de complejidad utilizado para la poda de complejidad de costes mínima. Se elegirá el subárbol con la mayor complejidad de costes que sea menor que ccp_alpha. 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 clases (problema de salida múltiple).

max_features_int

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

feature_importances_ndarray de forma (n_features,)

Devuelve la importancia de las características.

n_features_int

El número de características cuando se realiza fit.

n_outputs_int

El número de salidas cuando se realiza fit.

tree_Instancia del árbol

El objeto Tree subyacente. Por favor, consulta help(sklearn.tree._tree.Tree) para 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

ExtraTreeRegressor

Un regresor de árbol extremadamente aleatorio.

sklearn.ensemble.ExtraTreesClassifier

Un clasificador extra-árboles.

sklearn.ensemble.ExtraTreesRegressor

Un regresor extra-árboles.

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.

Referencias

1

P. Geurts, D. Ernst., and L. Wehenkel, «Extremely randomized trees», Machine Learning, 63(1), 3-42, 2006.

Ejemplos

>>> from sklearn.datasets import load_iris
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.ensemble import BaggingClassifier
>>> from sklearn.tree import ExtraTreeClassifier
>>> X, y = load_iris(return_X_y=True)
>>> X_train, X_test, y_train, y_test = train_test_split(
...    X, y, random_state=0)
>>> extra_tree = ExtraTreeClassifier(random_state=0)
>>> cls = BaggingClassifier(extra_tree, random_state=0).fit(
...    X_train, y_train)
>>> cls.score(X_test, y_test)
0.8947...

Métodos

apply

Devuelve el índice de la hoja en la que se predice cada muestra.

cost_complexity_pruning_path

Calcula la ruta de poda durante la Poda de Costo-Complejidad Mínimo.

decision_path

Devuelve la ruta de decisión en el árbol.

fit

Construye un clasificador de árbol de decisión a partir del conjunto de entrenamiento (X, y).

get_depth

Devuelve la profundidad del árbol de decisión.

get_n_leaves

Devuelve el número de hojas del árbol de decisión.

get_params

Obtiene los parámetros para este estimador.

predict

Predice la clase o valor de regresión para X.

predict_log_proba

Predice las log-probabilidades de clase de las muestras de entrada X.

predict_proba

Predice las probabilidades de clase de las muestras de entrada X.

score

Devuelve la precisión media en los datos de prueba y las etiquetas dados.

set_params

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 a una csr_matrix dispersa.

check_inputbool, 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 Costo-Complejidad Mínimo.

Ver Poda de Coste-Complejidad Mínima para más detalles sobre el proceso de poda.

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 una csc_matrix dispersa.

yarray-like de forma (n_samples,) o (n_samples, n_outputs)

Los valores objetivo (etiquetas de clase) como enteros o cadenas.

sample_weightarray-like de forma (n_samples,) default=None

Pesos de las muestras. Si es None, las muestras se ponderan por igual. Las separaciones que crearían nodos hijos con peso neto cero o negativo se ignoran al buscar una separación en cada nodo. Las separaciones también se ignoran si dan lugar a que una sola clase tenga un peso negativo en cualquiera de los nodos hijos.

Devuelve
ccp_pathBunch

Objeto tipo diccionario, con los siguientes atributos.

ccp_alphasndarray

Alfas efectivas 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.

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 a una csr_matrix dispersa.

check_inputbool, 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 no nulos 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 aportado por esa característica. También se conoce como la importancia de Gini.

Advertencia: las importancias de características basadas en la impureza pueden ser no representativas para características de alta cardinalidad (muchos valores únicos). Ver sklearn.inspection.permutation_importance como alternativa.

Devuelve
feature_importances_ndarray de forma (n_features,)

Reducción total normalizada de los criterios por característica (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 una csc_matrix dispersa.

yarray-like de forma (n_samples,) o (n_samples, n_outputs)

Los valores objetivo (etiquetas de clase) como enteros o cadenas.

sample_weightarray-like de forma (n_samples,) default=None

Pesos de las muestras. Si es None, las muestras se ponderan por igual. Las separaciones que crearían nodos hijos con peso neto cero o negativo se ignoran al buscar una separación en cada nodo. Las separaciones también se ignoran si dan lugar a que una sola clase tenga un peso negativo en cualquiera de los nodos hijos.

check_inputbool, 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 parámetro está obsoleto y no tiene ningún efecto. Se eliminará en la versión 1.1 (cambio de nombre de la versión 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_depthint

La profundidad máxima del árbol.

get_n_leaves()

Devuelve el número de hojas del árbol de decisión.

Devuelve
self.tree_.n_leavesint

Número de hojas.

get_params()

Obtiene los parámetros para este estimador.

Parámetros
deepbool, default=True

Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.

Devuelve
paramsdict

Nombres de parámetros mapeados a sus valores.

predict()

Predice la clase o valor 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 a una csr_matrix dispersa.

check_inputbool, 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 a una csr_matrix dispersa.

Devuelve
probandarray de forma (n_samples, n_classes) o lista de n_outputs tales arreglos si n_outputs > 1

Las probabilidades logarítmicas de clase de las muestras de entrada. El orden de las clases corresponde al del atributo classes_.

predict_proba()

Predice las probabilidades de clase de las muestras de entrada X.

La probabilidad de clase predicha 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 a una csr_matrix dispersa.

check_inputbool, 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 lista de n_outputs tales arreglos si n_outputs > 1

Las probabilidades de clase de las muestras de entrada. El orden de las clases corresponde al del atributo classes_.

score()

Devuelve la precisión media en los datos de prueba y las etiquetas dados.

En la clasificación multietiqueta, se trata de la exactitud del subconjunto, que es una métrica dura ya que se requiere para cada muestra que cada conjunto de etiquetas se prediga correctamente.

Parámetros
Xarray-like de forma (n_samples, n_features)

Muestras de prueba. La probabilidad de clase predicha es la fracción de muestras de la misma clase en una hoja.

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

Devuelve
scorefloat

Precisión media de self.predict(X) con respecto a y.

set_params()

Establece los parámetros de este estimador.

El método funciona tanto en 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 del estimador.