sklearn.tree
.DecisionTreeRegressor¶
- class sklearn.tree.DecisionTreeRegressor¶
Un regresor del árbol de decisión.
Lee más en el Manual de usuario.
- Parámetros
- criterion{«mse», «friedman_mse», «mae», «poisson»}, default=»mse»
La función para medir la calidad de una separación. Los criterios soportados son «mse» para el error cuadrático medio, que es igual a la reducción de la varianza como criterio de selección de características y minimiza la pérdida L2 utilizando la media de cada nodo terminal, «friedman_mse», que utiliza el error cuadrático medio con la puntuación de mejora de Friedman para las posibles separaciones, «mae» para el error absoluto medio, que minimiza la pérdida L1 utilizando la mediana de cada nodo terminal, y «poisson» que utiliza la reducción de la desviación de Poisson para encontrar separaciones.
Nuevo en la versión 0.18: Criterio de error absoluto medio (MAE).
Nuevo en la versión 0.24: Criterio de desviación de Poisson.
- splitter{«best», «random»}, default=»best»
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, los nodos se expanden hasta que todas las hojas sean puras o hasta que todas las hojas contengan menos muestras que min_samples_split.
- min_samples_splitint o float, default=2
El número mínimo de muestras necesario para separar un nodo interno:
Si es int, entonces considere
min_samples_split
como el número mínimo.Si es float,
min_samples_split
es una fracción yceil(min_samples_split * n_samples)
es el número mínimo de muestras para cada separación.
Distinto en la versión 0.18: Se han añadido valores flotantes para las fracciones.
- min_samples_leafint o float, default=1
El número mínimo de muestras requerido para estar en un nodo hoja. Un punto de separación en 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 la regresión.Si es int, entonces considere
min_samples_leaf
como el número mínimo.Si es 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 han añadido valores flotantes para las fracciones.
- min_weight_fraction_leaffloat, default=0.0
La fracción ponderada mínima de la suma total de pesos (de todas las muestras de entrada) requerida para estar en un nodo hoja. Las muestras tienen el mismo peso cuando no se proporciona sample_weight.
- max_featuresint, float or {«auto», «sqrt», «log2»}, default=None
El número de características a considerar cuando se busca la mejor separación:
Si es int, entonces se consideran las características
max_features
en cada separación.Si es float, entonces
max_features
es una fracción y las característicasint(max_features * n_features)
se consideran en cada separació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 partición no se detiene hasta que se encuentra al menos una partición válida de las muestras del nodo, incluso si requiere inspeccionar efectivamente más características de
max_features
.- random_stateint, instancia de RandomState o None, default=None
Controla la aleatoriedad del estimador. Las características siempre se permutan aleatoriamente en cada separación, incluso si
splitter
se establece en"best"
. Cuandomax_features < n_features
, el algoritmo seleccionarámax_features
al azar en cada división antes de encontrar la mejor división entre ellas. Pero la mejor división encontrada puede variar en diferentes ejecuciones, incluso simax_features=n_features
. Este es el caso, si la mejora del criterio es idéntica para varias separaciones y una de ellas tiene que ser seleccionada al azar. Para obtener un comportamiento determinista durante el ajuste,random_state
debe fijarse en un número entero. Ver Glosario para más detalles.- max_leaf_nodesint, default=None
Crece un árbol con
max_leaf_nodes
en modo best-first. 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 separará si esta separación induce una disminución de la impureza mayor o igual a este valor.
La ecuación de disminución de impurezas 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, si se pasasample_weight
.Nuevo en la versión 0.19.
- min_impurity_splitfloat, default=0
Umbral para la detención temprana en el crecimiento del árbol. Un nodo se separará si su impureza está por encima del umbral, de lo contrario será una hoja.
Obsoleto desde la versión 0.19: El valor de
min_impurity_split
ha quedado obsoleto 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 (cambio de nombre de 0.25). Utilicemin_impurity_decrease
en su lugar.- ccp_alphaflotante no negativo, default=0.0
Parámetro de complejidad utilizado para la Poda de Mínima Complejidad de Costes. 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
feature_importances_
ndarray de forma (n_features,)Devuelve las importancias de las características.
- max_features_int
El valor inferido de max_features.
- 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
DecisionTreeClassifier
Un clasificador 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.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_diabetes >>> from sklearn.model_selection import cross_val_score >>> from sklearn.tree import DecisionTreeRegressor >>> X, y = load_diabetes(return_X_y=True) >>> regressor = DecisionTreeRegressor(random_state=0) >>> cross_val_score(regressor, X, y, cv=10) ... ... array([-0.39..., -0.46..., 0.02..., 0.06..., -0.50..., 0.16..., 0.11..., -0.73..., -0.30..., -0.00...])
Métodos
Devuelve el índice de la hoja en la que se predice cada muestra.
Calcular la ruta de poda durante la Poda de Mínima Complejidad de costes.
Devuelve la ruta de decisión en el árbol.
Construye un regresor 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.
Devuelve el coeficiente de determinación \(R^2\) de la predicción.
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 unacsr_matrix
dispersa.- check_inputbool, default=True
Permite eludir 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()¶
Calcular la ruta de poda durante la Poda de Mínima Complejidad de costes.
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 unacsc_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_path
Bunch
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
.
- 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 a unacsr_matrix
dispersa.- check_inputbool, default=True
Permite eludir 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 las importancias 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 las 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 criterios por característica (importancia Gini).
- fit()¶
Construye un regresor 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 objetivo (números reales). Utilice
dtype=np.float64
yorder='C'
para obtener la máxima eficiencia.- 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.
- check_inputbool, default=True
Permite eludir 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
- selfDecisionTreeRegressor
Estimador
- 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
Los nombres de los parámetros asignados 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 a unacsr_matrix
dispersa.- check_inputbool, default=True
Permite eludir 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.
- 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.