sklearn.ensemble
.ExtraTreesRegressor¶
- class sklearn.ensemble.ExtraTreesRegressor¶
Un regresor 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_estimatorsint, 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{«mse», «mae»}, default=»mse»
La función a medir la calidad de una división. Los criterios soportados son «mse» para el error cuadrático medio, que es igual a la reducción de varianza como criterio de selección de características, y «mae» para el error absoluto medio.
Nuevo en la versión 0.18: Criterio de Error Absoluto Medio (EAM, MAE en inglés).
- max_depthint, 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_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 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_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 int, entonces considera
min_samples_split
como el número mínimo.Si float, 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_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_features{«auto», «sqrt», «log2»}, int o float, 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ísticasround(max_features * n_features)
son consideradas en cada división.Si es «auto», entonces
max_features=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_nodesint, 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 no hay ninguno, 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, 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=None
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.- bootstrapbool, 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_scorebool, default=False
Si se utilizan muestras fuera-de-bolsa para estimar el R^2 en datos no vistos.
- n_jobsint, default=None
El número de trabajos a ejecutar en paralelo.
fit
,predict
,decision_path
yapply
son todos paralelizados sobre los árboles.None
significa 1 excepto en un contextojoblib.parallel_backend
.-1
significa usar todos los procesadores. Ver Glosario para más detalles.- random_stateentero, instancia de RandomState o None, por defecto=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.
- verboseint, default=0
Controla la verbosidad a la hora de ajustar y predecir.
- warm_startbool, 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.- ccp_alphaflotante 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.
- max_samplesint o float, 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 int, entonces escoge
max_samples
muestras.Si es float, 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_ExtraTreeRegressor
La plantilla de estimador hijo utilizada para crear la colección de sub-estimadores ajustados.
- estimators_lista de DecisionTreeRegressor
La colección de sub-estimadores ajustados.
feature_importances_
ndarray de forma (n_features,)Las importancias basadas en la impureza de las características.
- n_features_int
El número de características.
- n_outputs_int
El número de salidas.
- oob_score_float
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_prediction_ndarray de forma (n_samples,)
La predicción calculada con el estimado fuera de bolsa en el conjunto de entrenamiento. Este atributo existe sólo cuando
oob_score
es True.
Ver también
sklearn.tree.ExtraTreeRegressor
Estimador base para este ensemble.
RandomForestRegressor
Regresor de ensemble utilizando á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.datasets import load_diabetes >>> from sklearn.model_selection import train_test_split >>> from sklearn.ensemble import ExtraTreesRegressor >>> X, y = load_diabetes(return_X_y=True) >>> X_train, X_test, y_train, y_test = train_test_split( ... X, y, random_state=0) >>> reg = ExtraTreesRegressor(n_estimators=100, random_state=0).fit( ... X_train, y_train) >>> reg.score(X_test, y_test) 0.2708...
Métodos
Aplica los árboles en el bosque a X, devuelve los índices de las hojas.
Devuelve la ruta de decisión en el bosque.
Construye un bosque de árboles a partir del conjunto de entrenamiento (X, y).
Obtiene los parámetros para este estimador.
Predice el objetivo de regresión para X.
Devuelve el coeficiente de determinación \(R^2\) de la predicción.
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 dispersacsr_matrix
.
- 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 dispersacsr_matrix
.
- Devuelve
- indicatormatriz dispersa de forma (n_samples, n_nodes)
Devuelve una matriz de indicador de nodo donde elementos no cero indican que las muestras pasan por los nodos. La matriz es de 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 dispersacsc_matrix
.- 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
Ponderados 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
- selfobjeto
- 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 el objetivo de regresión para X.
El objetivo de regresión predicho de una muestra de entrada es calculado como el medio de los objetivos de regresión predichos de los árboles en el 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 dispersacsr_matrix
.
- Devuelve
- yndarray de forma (n_samples,) o (n_samples, n_outputs)
Los valores predichos.
- score()¶
Devuelve el coeficiente de determinación \(R^2\) de la predicción.
El coeficiente \(R^2\) se define como \((1 - \frac{u}{v})\), donde \(u\) es la suma residual de cuadrados
((y_true - y_pred) ** 2).sum()
y \(v\) es la suma total de cuadrados((y_true - y_true.mean()) ** 2).sum()
. La mejor puntuación posible es 1,0 y puede ser negativa (porque el modelo puede ser arbitrariamente peor). Un modelo constante que siempre predice el valor esperado dey
, sin tener en cuenta las características de entrada, obtendría una puntuación \(R^2\) de 0,0.- Parámetros
- Xarray-like de forma (n_samples, n_features)
Muestras de prueba. Para algunos estimadores puede ser una matriz de núcleo precalculada o una lista de objetos genéricos con forma
(n_samples, n_samples_fitted)
, donden_samples_fitted
es el número de muestras utilizadas en el ajuste para el estimador.- yarray-like de forma (n_samples,) o (n_samples, n_outputs)
Valores verdaderos para
X
.- sample_weightarray-like de forma (n_samples,), default=None
Ponderaciones de la muestra.
- Devuelve
- scorefloat
\(R^2\) de
self.predict(X)
con respecto ay
.
Notas
La puntuación \(R^2\) utilizada al llamar a
score
en un regresor utilizamultioutput='uniform_average'
desde la versión 0.23 para mantener la coherencia con el valor predeterminado der2_score`
. Esto influye en el métodoscore
de todos los regresores de salida múltiple (excepto paraMultiOutputRegressor
).
- 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.