sklearn.neural_network.MLPClassifier

class sklearn.neural_network.MLPClassifier

Clasificador Perceptrón multicapa.

Este modelo optimiza la función de pérdida logarítmica 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 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 MLPClassifier.

Nuevo en la versión 0.22.

Atributos
classes_ndarray o list de ndarray de forma (n_classes,)

Etiquetas de clase para cada salida.

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.

Notas

MLPClassifier 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 o arreglos scipy 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 MLPClassifier
>>> from sklearn.datasets import make_classification
>>> from sklearn.model_selection import train_test_split
>>> X, y = make_classification(n_samples=100, random_state=1)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y,
...                                                     random_state=1)
>>> clf = MLPClassifier(random_state=1, max_iter=300).fit(X_train, y_train)
>>> clf.predict_proba(X_test[:1])
array([[0.038..., 0.961...]])
>>> clf.predict(X_test[:5, :])
array([1, 0, 1, 0, 1])
>>> clf.score(X_test, y_test)
0.8...

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 clasificador perceptrón multicapa

predict_log_proba

Devuelve el logaritmo de las estimaciones de probabilidad.

predict_proba

Estimaciones de probabilidad.

score

Devuelve la exactitud media en los datos de prueba y las etiquetas dadas.

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.

yarray-like de forma (n_samples,)

Los valores objetivo.

classesarreglo de forma (n_classes,), default=None

Clases a través de todas las llamadas a partial_fit. Puede obtenerse mediante np.unique(y_all), donde y_all es el vector objetivo del conjunto de datos completo. Este argumento es necesario para la primera llamada a partial_fit y puede omitirse en las llamadas posteriores. Ten en cuenta que no es necesario que y contenga todas las etiquetas en classes.

Devuelve
selfdevuelve un modelo MLP entrenado.
predict()

Predice utilizando el clasificador perceptrón multicapa

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

Los datos de entrada.

Devuelve
yndarray, forma (n_samples,) o (n_samples, n_classes)

Las clases predichas.

predict_log_proba()

Devuelve el logaritmo de las estimaciones de probabilidad.

Parámetros
Xndarray de forma (n_samples, n_features)

Los datos de entrada.

Devuelve
log_y_probndarray de forma (n_samples, n_classes)

La probabilidad logarítmica predicha de la muestra para cada clase en el modelo, donde las clases se ordenan como están en self.classes_. Equivalente a log(predict_proba(X))

predict_proba()

Estimaciones de probabilidad.

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

Los datos de entrada.

Devuelve
y_probndarray de forma (n_samples, n_classes)

La probabilidad predicha de la muestra para cada clase en el modelo, donde las clases se ordenan como están en self.classes_.

score()

Devuelve la exactitud media en los datos de prueba y las etiquetas dadas.

En la clasificación multietiqueta, se trata de la exactitud del subconjunto, que 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

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.

Ejemplos utilizando sklearn.neural_network.MLPClassifier