📖 Scenario: Imagine you are analyzing how the size of a house affects its price. Sometimes, the relationship is not just straight but curved. Polynomial features help us capture this curved relationship by adding powers of the original size.
🎯 Goal: You will create a small dataset of house sizes, set a degree for polynomial features, generate these features, and then display the new data with polynomial terms.
📋 What You'll Learn
Create a list of house sizes called house_sizes with values 1000, 1500, 2000, 2500, 3000
Create a variable called degree and set it to 3
Use PolynomialFeatures from sklearn.preprocessing to transform house_sizes into polynomial features of degree 3
Store the transformed data in a variable called poly_features
Print the poly_features array
💡 Why This Matters
🌍 Real World
Polynomial features help in real estate price prediction where the effect of size on price is not just straight but curved.
💼 Career
Data scientists use polynomial features to improve models that predict outcomes based on nonlinear relationships.
Progress0 / 4 steps
1
Create the house sizes list
Create a list called house_sizes with these exact values: 1000, 1500, 2000, 2500, 3000.
Data Analysis Python
Hint
Use square brackets to create a list and separate values with commas.
2
Set the polynomial degree
Create a variable called degree and set it to 3.
Data Analysis Python
Hint
Just assign the number 3 to the variable named degree.
3
Generate polynomial features
Import PolynomialFeatures from sklearn.preprocessing. Then create a PolynomialFeatures object called poly with degree set to degree. Next, reshape house_sizes into a 2D array called sizes_reshaped with one column. Finally, use poly.fit_transform(sizes_reshaped) to create polynomial features and store them in poly_features.
Data Analysis Python
Hint
Use a list comprehension to reshape the list into a list of lists, each with one element.
4
Print the polynomial features
Print the variable poly_features to display the polynomial features array.
Data Analysis Python
Hint
Use the print() function to show the array.
Practice
(1/5)
1. What is the main purpose of using Polynomial features in data analysis?
easy
A. To reduce the number of features in the dataset
B. To capture non-linear relationships by adding powers and combinations of features
C. To remove outliers from the data
D. To convert categorical data into numerical data
Solution
Step 1: Understand what polynomial features do
Polynomial features create new features by raising existing features to powers and combining them, which helps model curves.
Step 2: Identify the purpose in modeling
This helps capture non-linear relationships that simple linear features cannot represent.
Final Answer:
To capture non-linear relationships by adding powers and combinations of features -> Option B
Quick Check:
Polynomial features = capture curves [OK]
Hint: Polynomial features add powers to model curves, not reduce features [OK]
Common Mistakes:
Thinking polynomial features reduce feature count
Confusing polynomial features with data cleaning
Assuming polynomial features handle categorical data
2. Which of the following is the correct way to create polynomial features of degree 2 using scikit-learn in Python?
easy
A. from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(1)
X_poly = poly.transform(X)
B. from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit(X)
C. from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=3)
X_poly = poly.fit_transform(X)
D. from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)
Solution
Step 1: Import and initialize PolynomialFeatures correctly
Use degree=2 to specify the polynomial degree.
Step 2: Use fit_transform to fit and transform the data in one step
fit_transform returns the transformed feature matrix, which is needed for modeling.
Final Answer:
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X) -> Option D
Quick Check:
Use degree=2 and fit_transform() [OK]
Hint: Use fit_transform() with degree=2 to create polynomial features [OK]
Common Mistakes:
Using transform() without fitting first
Setting wrong degree value
Calling fit() without transform or fit_transform()
3. Given the code below, what is the shape of X_poly?
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
X = np.array([[2, 3]])
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)
medium
A. (1, 6)
B. (1, 3)
C. (2, 3)
D. (2, 6)
Solution
Step 1: Count original features and polynomial features
Original X has 2 features. Degree 2 polynomial features include:
- bias (1)
- original features (2)
- squared features and interaction (3): x1^2, x1*x2, x2^2
Total = 1 + 2 + 3 = 6 features.
Step 2: Check number of samples
X has 1 sample (row), so output shape is (1, 6).
Final Answer:
(1, 6) -> Option A
Quick Check:
Features after degree 2 = 6 [OK]
Hint: Degree 2 with 2 features gives 6 output features [OK]
Common Mistakes:
Ignoring bias (constant) term
Counting only squared terms, missing interactions
Confusing samples with features in shape
4. Identify the error in the following code that tries to create polynomial features of degree 3:
A. PolynomialFeatures requires degree to be specified as a keyword argument
B. fit_transform cannot be used on lists, input must be a numpy array
C. No error, the code runs correctly
D. PolynomialFeatures does not support degree 3
Solution
Step 1: Check PolynomialFeatures initialization
Degree can be passed as positional argument, so PolynomialFeatures(3) is valid.
Step 2: Check input type for fit_transform
fit_transform accepts array-like inputs, including lists, so [[1, 2], [3, 4]] is valid.
Final Answer:
No error, the code runs correctly -> Option C
Quick Check:
Degree 3 and list input are valid [OK]
Hint: PolynomialFeatures accepts degree as positional and list input [OK]
Common Mistakes:
Thinking degree must be keyword argument
Assuming lists are invalid input
Believing degree 3 is unsupported
5. You have a dataset with 3 features and want to add polynomial features up to degree 2 but exclude the bias (constant) term. Which code snippet correctly achieves this?
hard
A. poly = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly.fit_transform(X)