Fronteras de decisión para tres clases

En cualquier caso, la implementación del algoritmo de Logistic Regression incluida en Scikit-Learn permite la clasificación multiclase vía esquema OvR (One-vs-Rest), de modo que podemos también visualizar las fronteras de decisión para un modelo de este tipo (eso sí, entrenado solo a partir de dos características predictivas para poder mostrar el resultado en el plano).

Comenzamos, por lo tanto, leyendo el dataset y creando la etiqueta:

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

Entrenamos el modelo:

X = iris[["sepal_length", "sepal_width"]]
y = iris.label
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0)
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(solver = 'lbfgs')
model.fit(X_train.values, y_train.values)

Ejemplo de regresión logística

Y mostramos las fronteras de decisión:

show_boundaries(model, X_train.values, X_test.values, y_train, y_test, iris.species.unique())
Fronteras de decisión para tres clases