sklearn.ensemble.ExtraTreesClassifier

class sklearn.ensemble.ExtraTreesClassifier

Un clasificador extra-árbol.

Esta clase implementa un metaestimador que se ajusta a un número de árboles de decisión aleatorios (alias extra-arboles) en varias submuestras del conjunto de datos y utiliza el promedio para mejorar la precisión predictiva y controlar el sobre-ajuste.

Más información en Manual de usuario.

Parámetros
n_estimatorsentero, default=100

El número de árboles en el bosque.

Distinto en la versión 0.22: El valor predeterminado de n_estimators cambió de 10 a 100 en 0.22.

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.

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 es flotante, entonces min_samples_split es una fracción y ceil(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 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 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 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_features{«auto», «sqrt», «log2»}, entero o flotante, 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 round(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.

max_leaf_nodesentero, default=None

Hacer crecer árboles 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, 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 sample_weight es pasada.

Nuevo en la versión 0.19.

min_impurity_splitflotante, default=None

Umbral para la detención temprana 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: min_impurity_split ha quedado obsoleto en favor de min_impurity_decrease en la versión 0.19. El valor predeterminado 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.

bootstrapbooleano, default=False

Si se utilizan muestras por bootstrap al construir árboles. Si es False, todo el conjunto de datos se utiliza para construir cada árbol.

oob_scorebooleano, default=False

Si se utilizan muestras fuera de la bolsa para estimar la precisión de la generalización.

n_jobsentero, default=None

El número de trabajos a ejecutar en paralelo. fit, predict, decision_path y apply son todos paralelizados sobre los árboles. None significa 1 excepto en un contexto joblib.parallel_backend. -1 significa usar todos los procesadores. Ver Glosario para más detalles.

random_stateentero, instancia de RandomState, default=None

Controla 3 fuentes de aleatoriedad:

  • el bootstrapping de las muestras utilizadas al construir árboles (si bootstrap=True)

  • el muestreo de las características a considerar al buscar la mejor división en cada nodo (si max_features < n_features)

  • la extracción de las divisiones por cada una de las max_features

Ver Glosario para más detalles.

verboseentero, default=0

Controla la verbosidad a la hora de ajustar y predecir.

warm_startbooleano, default=False

Cuando se establece a True, reutiliza la solución de la llamada anterior para ajustar y añadir más estimadores al ensemble, de lo contrario, solamente ajustara un nuevo bosque. Ver el Glosario.

class_weight{«balanced», «balanced_subsample»}, dict o list of dicts, default=None

Ponderaciones asociadas a las clases de la forma {class_label: weight}. Si no se da, se supone que todas las clases tienen una ponderación de uno. Para los problemas de varias salidas, se puede proporcionar una lista de diccionarios en el mismo orden que las columnas de y.

Ten en cuenta que para multisalida (incluyendo multietiqueta) las ponderaciones deben ser definidas para cada clase de cada columna en su propio diccionario. Por ejemplo, para la clasificación múltiple 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))

El modo «balanced_subsample» es igual que «balanced», excepto que las ponderaciones se calculan basándose en la muestra de bootstrap para cada árbol que crece.

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

max_samplesentero o flotante, default=None

Si el bootstrap es True, el número de muestras a escoger de X para entrenar cada estimador base.

  • Si es None (predeterminado), entonces escoge X.shape[0] muestras.

  • Si es entero, entonces escoge max_samples muestras.

  • Si es flotante, entonces escoge max_samples * X.shape[0] muestras. Entonces, max_samples debería estar en el intervalo (0, 1).

Nuevo en la versión 0.22.

Atributos
base_estimator_ExtraTreesClassifier

La plantilla de estimador hijo utilizada para crear la colección de sub-estimadores ajustados.

estimators_lista de DecisionTreeClassifier

La colección de sub-estimadores ajustados.

classes_ndarray de la forma (n_classes,) o una lista de dichos arreglos

Las etiquetas de clases (problema de salida única), o una lista de arreglos de etiquetas de clase (problema de multi-salida).

n_classes_entero o lista

El número de clases (problema de salida única), o una lista que contiene el número de clases para cada salida (problema de salida múltiple).

feature_importances_ndarray de forma (n_features,)

Las importancias basadas en la impureza de las características.

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.

oob_score_flotante

Puntuación del conjunto de datos de entrenamiento obtenido utilizando una estimación fuera de bolsa. Este atributo solo existe cuando oob_score es True.

oob_decision_function_ndarray de forma (n_samples, n_classes)

Función de decisión calculada con estimación de fuera de bolsa sobre el conjunto de entrenamiento. Si n_estimators es pequeño, puede ser posible que un punto de datos nunca se haya dejado fuera durante el bootstrap. En este caso, oob_decision_function_ podría contener NaN. Este atributo existe sólo cuando oob_score es True.

Ver también

sklearn.tree.ExtraTreeClassifier

Clasificador base para este ensemble.

RandomForestClassifier

Clasificador de Ensemble basado en árboles con divisiones óptimas.

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.ensemble import ExtraTreesClassifier
>>> from sklearn.datasets import make_classification
>>> X, y = make_classification(n_features=4, random_state=0)
>>> clf = ExtraTreesClassifier(n_estimators=100, random_state=0)
>>> clf.fit(X, y)
ExtraTreesClassifier(random_state=0)
>>> clf.predict([[0, 0, 0, 0]])
array([1])

Métodos

apply

Aplica los árboles en el bosque a X, devuelve los índices de las hojas.

decision_path

Devuelve la ruta de decisión en el bosque.

fit

Construye un bosque de árboles a partir del conjunto de entrenamiento (X, y).

get_params

Obtiene los parámetros para este estimador.

predict

Predice la clase para X.

predict_log_proba

Predice las probabilidades logarítmicas de clase para X.

predict_proba

Predice las probabilidades de clase para 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()

Aplica los árboles en el bosque a X, devuelve los índices de las hojas.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, su dtype se convertirá a dtype=np.float32. Si se proporciona una matriz dispersa, se convertirá a una csr_matrix dispersa.

Devuelve
X_leavesndarray de forma (n_samples, n_estimators)

Para cada punto de dato x en X y para cada árbol en el bosque, devuelve el índice de la hoja en la que termina x.

decision_path()

Devuelve la ruta de decisión en el bosque.

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, su dtype se convertirá a dtype=np.float32. Si se proporciona una matriz dispersa, se convertirá a una csr_matrix dispersa.

Devuelve
indicatormatriz dispersa de forma (n_samples, n_nodes)

Devuelve una matriz de indicadores de nodos donde los elementos no nulos indican que las muestras pasan por los nodos. La matriz tiene el formato CSR.

n_nodes_ptrndarray de forma (n_estimators + 1,)

Las columnas de indicator[n_nodes_ptr[i]:n_nodes_ptr[i+1]] devuelve el valor de indicador para el estimador i-ésimo.

property feature_importances_

Las importancias basadas en la impureza de las características.

Cuanto más alto, más importante sera la característica. 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,)

Los valores de este arreglo suman a 1, a menos que todos los árboles sean árboles de nodos individuales consistiendo de solo el nodo raíz, en cuyo caso sera un arreglo de ceros.

fit()

Construye un bosque de árboles 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, su dtype se convertirá a dtype=np.float32. Si se proporciona una matriz dispersa, se convertirá a una csc_matrix dispersa.

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

Los valores objetivo (etiquetas de clase en clasificación, números reales en regresión).

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

Ponderaciones de muestra. Si es None, entonces las muestras están ponderadas de la misma manera. Divisiones que crearían nodos hijos con ponderado neto cero o negativo son ignoradas al buscar una división en cada nodo. En el caso de la clasificación, las divisiones también se ignoran si resultarían en cualquier clase individual llevando un ponderado negativo en cualquiera de los nodos hijos.

Devuelve
selfobject
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 subobjetos contenidos que son estimadores.

Devuelve
paramsdict

Nombres de parámetros mapeados a sus valores.

predict()

Predice la clase para X.

La clase predicha de una muestra de entrada es un voto de los árboles en el bosque, ponderado por sus estimaciones de probabilidad. Es decir, la clase predicha es la más alta media estimación de probabilidad a través de los árboles.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, su dtype se convertirá a dtype=np.float32. Si se proporciona una matriz dispersa, se convertirá a una csr_matrix dispersa.

Devuelve
yndarray de forma (n_samples,) o (n_samples, n_outputs)

Las clases predichas.

predict_log_proba()

Predice las probabilidades logarítmicas de clase para X.

Las probabilidades logarítmicas de clase predichas de una muestra de entrada se calculan como el logaritmo de las probabilidades medias de clase predichas de los árboles del bosque.

Parámetros
X{array-like, sparse matrix} de forma (n_samples, n_features)

Las muestras de entrada. Internamente, su dtype se convertirá a dtype=np.float32. Si se proporciona una matriz dispersa, se convertirá a una csr_matrix dispersa.

Devuelve
pndarray de forma (n_samples, n_classes), o una 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 a eso en el atributo classes_.

predict_proba()

Predice las probabilidades de clase para X.

Las probabilidades de clase predichas de una muestra de entrada se calculan como las probabilidades de clase predichas de los árboles en el bosque. La probabilidad de clase de un solo árbol 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, su dtype se convertirá a dtype=np.float32. Si se proporciona una matriz dispersa, se convertirá a una csr_matrix dispersa.

Devuelve
pndarray de forma (n_samples, n_classes), o una 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 a eso en el atributo classes_.

score()

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

En la clasificación multietiqueta, esta es la precisión del subconjunto, la cual 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, n_features)

Muestras de prueba.

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

Etiquetas verdaderas para X.

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

Ponderados de muestras.

Devuelve
scoreflotante

Precisión media de self.predict(X) con relación 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.