Learning curves help us see how well a model learns over time. They show if the model is improving or stuck.
Learning curves in ML Python
from sklearn.model_selection import learning_curve train_sizes, train_scores, test_scores = learning_curve( estimator, X, y, cv=5, train_sizes=[0.1, 0.3, 0.5, 0.7, 1.0])
estimator is your machine learning model.
X and y are your data and labels.
from sklearn.linear_model import LogisticRegression from sklearn.model_selection import learning_curve model = LogisticRegression() train_sizes, train_scores, test_scores = learning_curve(model, X, y)
train_sizes, train_scores, test_scores = learning_curve(
model, X, y, cv=3, train_sizes=[0.2, 0.4, 0.6, 0.8, 1.0])This code loads the iris flower data, trains a logistic regression model on different amounts of data, and prints the average training and testing accuracy for each size.
from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression from sklearn.model_selection import learning_curve import numpy as np # Load data X, y = load_iris(return_X_y=True) # Create model model = LogisticRegression(max_iter=200) # Get learning curve data train_sizes, train_scores, test_scores = learning_curve( model, X, y, cv=5, train_sizes=np.linspace(0.1, 1.0, 5)) # Calculate mean scores train_mean = np.mean(train_scores, axis=1) test_mean = np.mean(test_scores, axis=1) # Print results for size, train_score, test_score in zip(train_sizes, train_mean, test_mean): print(f"Training size: {size}, Train score: {train_score:.3f}, Test score: {test_score:.3f}")
Learning curves show training and testing scores as the training size grows.
If training and testing scores are close and high, the model is good.
If training score is high but testing score is low, the model may be overfitting.
Learning curves help check how well a model learns with more data.
They show if a model is too simple, too complex, or just right.
Use them to decide if you need more data or a different model.
Practice
Solution
Step 1: Understand the purpose of learning curves
Learning curves plot model performance (like accuracy or error) against the amount of training data.Step 2: Identify what is shown on the curve
The curve shows how well the model learns as it sees more data, helping to spot underfitting or overfitting.Final Answer:
How model performance changes with more training data -> Option BQuick Check:
Learning curve = model performance vs data size [OK]
- Confusing learning curves with training time plots
- Thinking learning curves show feature counts
- Assuming hardware affects learning curves directly
Solution
Step 1: Recall the correct scikit-learn function for learning curves
The function is learning_curve from sklearn.model_selection.Step 2: Check the import and usage syntax
from sklearn.model_selection import learning_curve; train_sizes, train_scores, test_scores = learning_curve(model, X, y) correctly imports learning_curve and calls it with model, features X, and labels y.Final Answer:
from sklearn.model_selection import learning_curve; train_sizes, train_scores, test_scores = learning_curve(model, X, y) -> Option CQuick Check:
Correct import and call = from sklearn.model_selection import learning_curve; train_sizes, train_scores, test_scores = learning_curve(model, X, y) [OK]
- Using wrong module or function names
- Trying to import non-existent functions
- Confusing learning_curve with train_test_split
from sklearn.model_selection import learning_curve train_sizes, train_scores, test_scores = learning_curve(model, X, y, train_sizes=[0.1, 0.5, 1.0])
Solution
Step 1: Understand train_sizes parameter
train_sizes is given as a list with 3 values: 0.1, 0.5, and 1.0, representing fractions of the training data.Step 2: Determine output shape of train_sizes
The learning_curve function returns train_sizes as an array with length equal to the number of training sizes specified, so shape is (3,).Final Answer:
(3,) -> Option DQuick Check:
train_sizes length = number of fractions given [OK]
- Assuming train_sizes matches number of samples
- Confusing train_sizes with train_scores shape
- Thinking train_sizes is always (100,)
Solution
Step 1: Analyze error levels on learning curve
High training error means the model cannot fit the training data well.Step 2: Compare training and validation errors
Both errors being high and close indicates underfitting, where the model is too simple.Final Answer:
The model is underfitting the data -> Option AQuick Check:
High train & val error = underfitting [OK]
- Confusing underfitting with overfitting
- Assuming data leakage causes high errors
- Thinking large data size causes this pattern
Solution
Step 1: Interpret the learning curve pattern
Low training error but high validation error means the model fits training data too well but fails on new data, indicating overfitting.Step 2: Decide the best action to fix overfitting
Using a simpler model reduces complexity and helps generalize better, improving validation error.Final Answer:
Try a simpler model to reduce overfitting -> Option AQuick Check:
Low train error + high val error = overfitting; simplify model [OK]
- Collecting more data won't fix overfitting alone
- Increasing complexity worsens overfitting
- Assuming model is perfect with low training error
Ready to prove it?
Pass the test and this pattern moves unknown
