El Perceptrón Multicapa e Iris

De forma semejante a como hemos hecho con los algoritmos previamente revisados, probemos el Perceptrón Multicapa con el dataset Iris. Comenzamos cargando los datos y codificando la etiqueta:

iris = sns.load_dataset("Iris")
iris["label"] = iris.species.astype("category").cat.codes

Como queremos mostrar la frontera de decisión, nos quedamos solo con dos características predictivas:

X = iris[["sepal_length", "sepal_width"]]
y = iris.label

A continuación vamos a escalar los datos, lo que favorece la convergencia del algoritmo al requerir menos iteraciones y modificaciones menores en los parámetros. Para ello vamos a aplicar el escalador StandardScaler de Scikit-Learn:

from sklearn.tree import DecisionTreeClassifier
scaler = StandardScaler()
X = scaler.fit_transform(X)

Ahora creamos los datasets de entrenamiento y validación:

X_train, X_test, y_train, y_test = train_test_split(X, y)

Por último, importamos la clase, la instanciamos y entrenamos el algoritmo:

from sklearn.neural_network import MLPClassifier

Vamos a entrenar una red neuronal con la estructura por defecto (una única capa oculta con 100 neuronas). Para asegurar que el algoritmo converge, vamos a establecer un número máximo de 1000 epochs (el valor por defecto es 200):

model = MLPClassifier(max_iter = 1000)
model.fit(X_train, y_train)

Ejemplo de Perceptrón Multicapa

Comprobemos el porcentaje de aciertos en el dataset de validación:

model.score(X_test, y_test)
0.8157894736842105

Y visualicemos las fronteras de decisión (recordemos que hemos escalado las dos características predictivas):

show_boundaries(model, X_train, None, y_train, None, iris.species.unique())
Ejemplo de Perceptrón Multicapa