sklearn.neural_network.MLPRegressor

class sklearn.neural_network.MLPRegressor

Regresor Perceptrón multicapa.

Este modelo optimiza la pérdida cuadrada utilizando LBFGS o el descenso de gradiente estocástico.

Nuevo en la versión 0.18.

Parámetros
hidden_layer_sizestupla, length = n_layers - 2, default=(100,)

El elemento i-ésimo representa el número de neuronas en la i-ésima capa oculta.

activation{“identity”, “logistic”, “tanh”, “relu”}, default=”relu”

Función de activación para la capa oculta.

  • “identity”, activación no-op, útil para implementar el cuello de botella lineal, devuelve f(x) = x

  • “logistic”, la función sigmoide logística, devuelve f(x) = 1 / (1 + exp(-x)).

  • “tanh”, la función tangente hiperbólica, devuelve f(x) = tanh(x).

  • “relu”, la función de unidad lineal rectificada, devuelve f(x) = max(0, x)

solver{“lbfgs”, “sgd”, “adam”}, default=”adam”

El solucionador para la optimización de la ponderación.

  • “lbfgs” es un optimizador en la familia de los métodos cuasi-Newton.

  • “sgd” se refiere al descenso de gradiente estocástico.

  • “adam” se refiere a un optimizador basado en el gradiente estocástico propuesto por Kingma, Diederik y Jimmy Ba

Nota: El solucionador por defecto “adam” funciona bastante bien en conjuntos de datos relativamente grandes (con miles de muestras de entrenamiento o más) en términos de tiempo de entrenamiento y puntuación de validación. Sin embargo, para conjuntos de datos pequeños, “lbfgs” puede converger más rápido y funcionar mejor.

alphafloat, default=0.0001

Parámetro de penalización L2 (término de regularización).

batch_sizeint, default=”auto”

Tamaño de los minilotes para los optimizadores estocásticos. Si el solucionador es “lbfgs”, el clasificador no utilizará minilotes. Cuando se establece en «auto», batch_size=min(200, n_samples)

learning_rate{“constant”, “invscaling”, “adaptive”}, default=”constant”

Programación de la tasa de aprendizaje para las actualizaciones de ponderación.

  • “constant” es una tasa de aprendizaje constante dada por “learning_rate_init”.

  • “invscaling” disminuye gradualmente la tasa de aprendizaje learning_rate_ en cada paso de tiempo “t” utilizando un exponente de escala inversa de “power_t”. effective_learning_rate = learning_rate_init / pow(t, power_t)

  • “adaptive” mantiene la tasa de aprendizaje constante a “learning_rate_init” mientras la pérdida asociada al entrenamiento siga disminuyendo. Cada vez que dos épocas consecutivas no consiguen disminuir la pérdida asociada al entrenamiento en al menos tol, o no consiguen aumentar la puntuación de validación en al menos tol si “early_stopping” está activado, la tasa de aprendizaje actual se divide por 5.

Sólo se utiliza cuando solver=”sgd”.

learning_rate_initdouble, default=0.001

La tasa de aprendizaje inicial utilizada. Controla el tamaño del paso en la actualización de las ponderaciones. Sólo se utiliza cuando solver=”sgd” o “adam”.

power_tdouble, default=0.5

El exponente de la tasa de aprendizaje de escala inversa. Se utiliza en la actualización de la tasa de aprendizaje efectiva cuando learning_rate se establece en “invscaling”. Sólo se utiliza cuando solver=”sgd”.

max_iterint, default=200

Número máximo de iteraciones. El solucionador itera hasta la convergencia (determinada por “tol”) o este número de iteraciones. Para los solucionadores estocásticos (“sgd”, “adam”), ten en cuenta que esto determina el número de épocas (cuántas veces se utilizará cada punto de datos), no el número de pasos del gradiente.

shufflebool, default=True

Si se revuelven las muestras en cada iteración. Sólo se utiliza cuando solver=”sgd” o “adam”.

random_stateentero, instancia de RandomState, default=None

Determina la generación de números aleatorios para la inicialización de las ponderaciones y el sesgo, la división de entrenamiento-prueba si se utiliza la parada anticipada, y el muestreo por lotes cuando solver=”sgd” o “adam”. Pasa un int para obtener resultados reproducibles a través de múltiples llamadas a la función. Ver Glosario.

tolfloat, default=1e-4

Tolerancia para la optimización. Cuando la pérdida o la puntuación no mejora en al menos tol durante n_iter_no_change iteraciones consecutivas, a menos que learning_rate esté establecido en “adaptive”, se considera que se ha alcanzado la convergencia y se detiene el entrenamiento.

verbosebool, default=False

Si se imprimen mensajes de progreso en stdout.

warm_startbool, default=False

Cuando se establece en True, reutiliza la solución de la llamada previa a fit como inicialización, de lo contrario, sólo borra la solución previa. Ver el Glosario.

momentumfloat, default=0.9

Momentum para la actualización del descenso de gradiente. Debe estar entre 0 y 1. Sólo se utiliza cuando solver=”sgd”.

nesterovs_momentumbool, default=True

Si se utiliza el momentum de Nesterov. Sólo se utiliza cuando solver=”sgd” y momentum > 0.

early_stoppingbool, default=False

Si se utiliza la parada anticipada para terminar el entrenamiento cuando la puntuación de validación no está mejorando. Si se establece como verdadero, se apartará automáticamente el 10% de los datos de entrenamiento como validación y terminará el entrenamiento cuando la puntuación de validación no mejore al menos en tol durante n_iter_no_change épocas consecutivas. Sólo es efectivo cuando solver=”sgd” o “adam”

validation_fractionfloat, default=0.1

La proporción de los datos de entrenamiento que se reservan como conjunto de validación para la parada anticipada. Debe estar entre 0 y 1. Sólo se utiliza si early_stopping es True

beta_1float, default=0.9

Tasa de decaimiento exponencial para las estimaciones del vector del primer momento en adam, debe estar en [0, 1). Sólo se utiliza cuando solver=”adam”

beta_2float, default=0.999

Tasa de decaimiento exponencial para las estimaciones del vector del segundo momento en adam, debe estar en [0, 1). Sólo se utiliza cuando solver=”adam”

epsilonfloat, default=1e-8

Valor para la estabilidad numérica en adam. Sólo se utiliza cuando solver=”adam”

n_iter_no_changeint, default=10

Número máximo de épocas para no cumplir con la mejora de tol. Sólo efectivo cuando solver=”sgd” o “adam”

Nuevo en la versión 0.20.

max_funint, default=15000

Sólo se utiliza cuando solver=”lbfgs”. Número máximo de llamadas a la función. El solucionador itera hasta la convergencia (determinada por “tol”), hasta que el número de iteraciones alcanza max_iter, o hasta este número de llamadas a la función. Ten en cuenta que el número de llamadas a la función será mayor o igual que el número de iteraciones para el MLPRegressor.

Nuevo en la versión 0.22.

Atributos
loss_float

La pérdida actual calculada con la función de pérdida.

best_loss_float

La pérdida mínima alcanzada por el solucionador a lo largo del ajuste.

loss_curve_ : list de forma (n_iter_,)list de forma (

El i-ésimo elemento en la lista representa la pérdida en la i-ésima iteración.

t_int

El número de muestras de entrenamiento consideradas por el solucionador durante el ajuste.

coefs_list de forma (n_layers - 1,)

El elemento i-ésimo en la lista representa la matriz de ponderación correspondiente a la capa i.

intercepts_list de forma (n_layers - 1,)

El i-ésimo elemento en la lista representa el vector de sesgo correspondiente a la capa i + 1.

n_iter_int

El número de iteraciones que ha ejecutado el solucionador.

n_layers_int

Número de capas.

n_outputs_int

Número de salidas.

out_activation_str

Nombre de la función de activación de salida.

loss_curve_list de forma (n_iters,)

Valor de pérdida evaluado al final de cada paso de entrenamiento.

t_int

Matemáticamente equivale a n_iters * X.shape[0], significa time_step y es utilizado por el programador de la tasa de aprendizaje del optimizador.

Notas

El MLPRegressor entrena de forma iterativa ya que en cada paso de tiempo se calculan las derivadas parciales de la función de pérdida con respecto a los parámetros del modelo para actualizar los parámetros.

También puede tener un término de regularización añadido a la función de pérdida que reduce los parámetros del modelo para evitar el sobreajuste.

Esta implementación funciona con datos representados como arreglos numpy densos y dispersos de valores de punto flotante.

Referencias

Hinton, Geoffrey E.

«Connectionist learning procedures.» Artificial intelligence 40.1 (1989): 185-234.

Glorot, Xavier, y Yoshua Bengio. «Understanding the difficulty of

training deep feedforward neural networks.» International Conference on Artificial Intelligence and Statistics. 2010.

He, Kaiming, et al. «Delving deep into rectifiers: Surpassing human-level

performance on imagenet classification.» arXiv preprint arXiv:1502.01852 (2015).

Kingma, Diederik, y Jimmy Ba. «Adam: A method for stochastic

optimization.» arXiv preprint arXiv:1412.6980 (2014).

Ejemplos

>>> from sklearn.neural_network import MLPRegressor
>>> from sklearn.datasets import make_regression
>>> from sklearn.model_selection import train_test_split
>>> X, y = make_regression(n_samples=200, random_state=1)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y,
...                                                     random_state=1)
>>> regr = MLPRegressor(random_state=1, max_iter=500).fit(X_train, y_train)
>>> regr.predict(X_test[:2])
array([-0.9..., -7.1...])
>>> regr.score(X_test, y_test)
0.4...

Métodos

fit

Ajusta el modelo a la matriz de datos X y objetivo(s) y.

get_params

Obtiene los parámetros para este estimador.

predict

Predice utilizando el modelo de perceptrón multicapa.

score

Devuelve el coeficiente de determinación \(R^2\) de la predicción.

set_params

Establece los parámetros de este estimador.

fit()

Ajusta el modelo a la matriz de datos X y objetivo(s) y.

Parámetros
Xndarray o matriz dispersa de forma (n_samples, n_features)

Los datos de entrada.

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

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

Devuelve
selfdevuelve un modelo MLP entrenado.
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.

property partial_fit

Actualiza el modelo con una sola iteración sobre los datos dados.

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

Los datos de entrada.

yndarray de forma (n_samples,)

Los valores objetivo.

Devuelve
selfdevuelve un modelo MLP entrenado.
predict()

Predice utilizando el modelo de perceptrón multicapa.

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

Los datos de entrada.

Devuelve
yndarray de forma (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 de cuadrados de los residuos ((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 de y, 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), donde n_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 muestras.

Devuelve
scorefloat

\(R^2\) de self.predict(X) con respecto a y.

Notas

La puntuación \(R^2\) utilizada al llamar a score en un regresor utiliza multioutput='uniform_average' desde la versión 0.23 para mantener la consistencia con el valor predeterminado de r2_score. Esto influye en el método score de todos los regresores de salida múltiple (excepto para MultiOutputRegressor).

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.

Ejemplos utilizando sklearn.neural_network.MLPRegressor