Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Logistic Regression

Step 0: Get Iris data

There are 3 categories: ['Iris-setosa' 'Iris-versicolor' 'Iris-virginica']
Loading...
Fitting a dataset with X: (100, 2) and y: (100,)
<Figure size 960x720 with 1 Axes>
There are 50 examples of Iris-versicolor

Step 1: Define Logistic Regression base class

<Figure size 900x450 with 2 Axes>

Nonlinear model

Despite having a nonlinear activation function, logistic regression still only learns a linear decision boundary. We can learn a nonlinear decision boundary by augmenting the set of features available for decision-making. To do this, we will leverage the PolynomialFeatures class from scikit-learn.

Suppose [x1, x2, x3] = [1.0, 2.0, 3.0]
PolynomialFeatures(degree=2) produces (10,)
1 * 1 = 1.0
1 * x1 = 1.0
1 * x2 = 2.0
1 * x3 = 3.0
x1 * x1 = 1.0
x1 * x2 = 2.0
x1 * x3 = 3.0
x2 * x2 = 4.0
x2 * x3 = 6.0
x3 * x3 = 9.0
Degree 2 augmented feature set contains 5 features
<Figure size 900x450 with 2 Axes>

What happens if we add more polynomials to the feature library?

Degree 1 augmented feature set contains 2 features
Degree 2 augmented feature set contains 5 features
Degree 3 augmented feature set contains 9 features
Degree 4 augmented feature set contains 14 features
Degree 5 augmented feature set contains 20 features
Degree 10 augmented feature set contains 65 features
<Figure size 1500x750 with 6 Axes>

Regularization

Degree 10 augmented feature set contains 65 features
<Figure size 900x450 with 2 Axes>
Degree 1 augmented feature set contains 2 features
Degree 1 augmented feature set contains 2 features
Degree 5 augmented feature set contains 20 features
Degree 5 augmented feature set contains 20 features
Degree 10 augmented feature set contains 65 features
Degree 10 augmented feature set contains 65 features
<Figure size 1500x750 with 6 Axes>
Degree 10 augmented feature set contains 65 features
<Figure size 900x450 with 2 Axes>
Degree 1 augmented feature set contains 2 features
Degree 1 augmented feature set contains 2 features
Degree 5 augmented feature set contains 20 features
Degree 5 augmented feature set contains 20 features
Degree 10 augmented feature set contains 65 features
Degree 10 augmented feature set contains 65 features
<Figure size 1500x750 with 6 Axes>
Degree 10 augmented feature set contains 65 features
<Axes: xlabel='coef', ylabel='model'>
<Figure size 960x720 with 1 Axes>

We could even try a nonlinear problem!

[Text(0.5, 0, '$x_0$'), Text(0, 0.5, '$x_1$'), None]
<Figure size 960x720 with 1 Axes>
Degree 3 augmented feature set contains 9 features
<Figure size 900x450 with 2 Axes>

Extension: Multi-class Logistic Regression

Fitting a dataset with X: (150, 2) and y: (150, 3)
<Figure size 960x720 with 1 Axes>
<Figure size 960x720 with 1 Axes>
[Text(0.5, 0, 'Sepal length [cm]'), Text(0, 0.5, 'Petal length [cm]')]
<Figure size 960x720 with 1 Axes>