Bird
Raised Fist0
SciPydata~20 mins

Singular Value Decomposition (svd) in SciPy - Mini Project: Build & Apply

Choose your learning style10 modes available
Singular Value Decomposition (svd) with SciPy
📖 Scenario: Imagine you work at a movie streaming company. You have a small matrix showing how much each user liked certain movies. You want to break this matrix into simpler parts to understand patterns better.
🎯 Goal: You will use scipy.linalg.svd to break a matrix into three parts: U, S, and Vt. Then you will print these parts to see the result.
📋 What You'll Learn
Create a 3x3 matrix called ratings with exact values
Create a variable full_matrices to control the SVD output shape
Use scipy.linalg.svd with ratings and full_matrices
Print the matrices U, S, and Vt
💡 Why This Matters
🌍 Real World
SVD is used in recommendation systems, image compression, and noise reduction by breaking complex data into simpler parts.
💼 Career
Understanding SVD helps in data analysis roles, machine learning, and any job involving matrix factorization or dimensionality reduction.
Progress0 / 4 steps
1
Create the ratings matrix
Create a 3x3 matrix called ratings using a list of lists with these exact values: [[5, 3, 0], [4, 0, 0], [1, 1, 0]]
SciPy
Hint

Use a list of lists to create the matrix exactly as shown.

2
Set the full_matrices variable
Create a variable called full_matrices and set it to False to get reduced SVD matrices.
SciPy
Hint

This variable controls the shape of the output matrices from SVD.

3
Perform Singular Value Decomposition
Import scipy.linalg and use scipy.linalg.svd with ratings and full_matrices. Store the results in variables U, S, and Vt.
SciPy
Hint

Use scipy.linalg.svd with the full_matrices argument.

4
Print the SVD matrices
Print the variables U, S, and Vt each on a separate line.
SciPy
Hint

Use three print statements, one for each variable.

Practice

(1/5)
1.

What does the svd function in scipy.linalg return when applied to a matrix?

easy
A. The determinant of the matrix
B. Only the singular values as a matrix
C. The inverse of the matrix
D. Three matrices: U, singular values as a vector, and VT

Solution

  1. Step 1: Understand the output of SVD

    The Singular Value Decomposition splits a matrix into three parts: U, singular values, and VT.
  2. Step 2: Recall scipy.linalg.svd output

    Scipy's svd returns U (left singular vectors), a vector of singular values, and VT (right singular vectors transposed).
  3. Final Answer:

    Three matrices: U, singular values as a vector, and VT -> Option D
  4. Quick Check:

    SVD output = U, s, VT [OK]
Hint: Remember SVD splits matrix into U, s, VT [OK]
Common Mistakes:
  • Thinking svd returns only singular values
  • Confusing VT with V
  • Expecting a single matrix output
2.

Which of the following is the correct way to import and use svd from scipy.linalg?

???
easy
A. import svd from scipy.linalg U, s, VT = svd(matrix)
B. import scipy.linalg.svd U, s, VT = scipy.linalg.svd(matrix)
C. from scipy.linalg import svd U, s, VT = svd(matrix)
D. from scipy import svd U, s, VT = svd(matrix)

Solution

  1. Step 1: Check correct import syntax

    Correct import for svd is from scipy.linalg import svd.
  2. Step 2: Confirm usage

    Then call svd(matrix) to get U, s, VT.
  3. Final Answer:

    from scipy.linalg import svd\nU, s, VT = svd(matrix) -> Option C
  4. Quick Check:

    Correct import and call = from scipy.linalg import svd U, s, VT = svd(matrix) [OK]
Hint: Use 'from scipy.linalg import svd' to import [OK]
Common Mistakes:
  • Using incorrect import syntax
  • Trying to import svd directly from scipy
  • Using 'import svd from' which is invalid
3.

Given the code below, what is the shape of U, s, and VT?

import numpy as np
from scipy.linalg import svd

matrix = np.array([[1, 2], [3, 4], [5, 6]])
U, s, VT = svd(matrix)
medium
A. U: (3, 3), s: (2,), VT: (2, 2)
B. U: (3, 2), s: (2,), VT: (2, 2)
C. U: (2, 2), s: (2,), VT: (3, 3)
D. U: (3, 3), s: (3,), VT: (2, 2)

Solution

  1. Step 1: Identify matrix shape

    The matrix is 3 rows by 2 columns (3x2).
  2. Step 2: Recall full SVD shapes

    Full SVD returns U as (m, m), s as (min(m,n),), VT as (n, n). Here m=3, n=2, so U=(3,3), s=(2,), VT=(2,2).
  3. Final Answer:

    U: (3, 3), s: (2,), VT: (2, 2) -> Option A
  4. Quick Check:

    Full SVD shapes = U(m,m), s(min(m,n)), VT(n,n) [OK]
Hint: Full SVD U shape = (m,m), VT = (n,n), s length = min(m,n) [OK]
Common Mistakes:
  • Assuming U shape is (m,n) instead of (m,m)
  • Confusing s shape with VT shape
  • Mixing up rows and columns in shapes
4.

What is wrong with the following code snippet that tries to compute the SVD of a matrix?

from scipy.linalg import svd

matrix = [[1, 0], [0, 1]]
U, s, VT = svd(matrix)
print(U, s, VT)
medium
A. svd function does not return three values
B. The matrix should be a NumPy array, not a list of lists
C. The import statement is incorrect
D. The print statement syntax is wrong

Solution

  1. Step 1: Check input type for svd

    svd expects a NumPy array or similar numeric array, not a plain Python list.
  2. Step 2: Identify error cause

    Passing a list of lists can cause unexpected behavior or errors; converting to np.array fixes this.
  3. Final Answer:

    The matrix should be a NumPy array, not a list of lists -> Option B
  4. Quick Check:

    Input must be np.array for svd [OK]
Hint: Always convert input to np.array before svd [OK]
Common Mistakes:
  • Passing Python lists directly to svd
  • Assuming svd returns a single matrix
  • Incorrect import or print syntax
5.

You have a large dataset matrix X of shape (1000, 50). You want to reduce its dimensionality to 10 while keeping most information. Which step using scipy.linalg.svd helps achieve this?

hard
A. Compute full SVD, then keep only the first 10 singular values and corresponding vectors
B. Compute SVD and discard the singular values
C. Use svd to get U and VT, then multiply all components without truncation
D. Apply svd only on a 10x10 submatrix of X

Solution

  1. Step 1: Understand dimensionality reduction with SVD

    Reducing dimensions means keeping top singular values and vectors that capture most variance.
  2. Step 2: Apply truncation after full SVD

    Compute full SVD, then keep first 10 singular values and corresponding columns of U and rows of VT to reduce size.
  3. Final Answer:

    Compute full SVD, then keep only the first 10 singular values and corresponding vectors -> Option A
  4. Quick Check:

    Truncate SVD components to reduce dimensions [OK]
Hint: Keep top singular values and vectors for reduction [OK]
Common Mistakes:
  • Discarding singular values loses information
  • Using only a submatrix loses global structure
  • Not truncating leads to no reduction
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard