Bird
Raised Fist0
SciPydata~10 mins

Distance metrics (euclidean, cosine, manhattan) in SciPy - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Distance metrics (euclidean, cosine, manhattan)
Start with two points
↓
Choose distance metric
↓
Euclidean: sqrt(sum((x_i - y_i)^2))
↓
Cosine: 1 - (dot(x,y) / (||x||*||y||))
↓
Manhattan: sum(|x_i - y_i|)
↓
Calculate distance
↓
Output distance value
We start with two points, pick a distance type, calculate it, then get the distance value.
Execution Sample
SciPy
from scipy.spatial import distance

x = [1, 2, 3]
y = [4, 5, 6]

print(distance.euclidean(x, y))
print(distance.cosine(x, y))
print(distance.cityblock(x, y))
Calculate Euclidean, Cosine, and Manhattan distances between two 3D points.
Execution Table
StepMetricCalculationIntermediate ValuesResult
1Euclideansqrt((1-4)^2 + (2-5)^2 + (3-6)^2)Differences squared: 9, 9, 95.196152422706632
2Cosine1 - (dot(x,y) / (||x|| * ||y||))dot=32, ||x||=3.7417, ||y||=8.77490.025368153802923787
3Manhattansum(|1-4| + |2-5| + |3-6|)Absolute differences: 3, 3, 39
4EndAll distances calculated--
💡 All three distances computed for given points, execution ends.
Variable Tracker
VariableStartAfter EuclideanAfter CosineAfter ManhattanFinal
x[1, 2, 3][1, 2, 3][1, 2, 3][1, 2, 3][1, 2, 3]
y[4, 5, 6][4, 5, 6][4, 5, 6][4, 5, 6][4, 5, 6]
euclidean_distanceNone5.1961524227066325.1961524227066325.1961524227066325.196152422706632
cosine_distanceNoneNone0.0253681538029237870.0253681538029237870.025368153802923787
manhattan_distanceNoneNoneNone99
Key Moments - 3 Insights
Why is cosine distance close to zero even though points look far apart?
Cosine distance measures angle difference, not length. See execution_table row 2: dot product and norms show vectors point similarly, so cosine distance is small.
Why do Euclidean and Manhattan distances give different values?
Euclidean uses squares and square root (row 1), Manhattan sums absolute differences (row 3). They measure distance differently, so results differ.
Are the original points changed during calculation?
No, variable_tracker shows x and y stay the same throughout all steps.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 1, what is the Euclidean distance calculated?
A5.196
B9
C0.025
D3
💡 Hint
Check the 'Result' column in execution_table row 1.
At which step does the condition for cosine distance calculation appear?
AStep 1
BStep 3
CStep 2
DStep 4
💡 Hint
Look for cosine metric details in execution_table.
If we change point y to [1, 2, 3], what happens to the Manhattan distance?
AIt becomes 5.196
BIt becomes 0
CIt becomes 9
DIt becomes 1
💡 Hint
Check variable_tracker for Manhattan distance and think about absolute differences.
Concept Snapshot
Distance metrics measure how far points are.
Euclidean: straight line distance (sqrt of sum squares).
Cosine: angle difference (1 - cosine similarity).
Manhattan: sum of absolute differences.
Use scipy.spatial.distance for easy calculation.
Full Transcript
We start with two points x and y. We pick a distance metric: Euclidean, Cosine, or Manhattan. For Euclidean, we square differences, sum them, then take the square root. For Cosine, we calculate the dot product and norms, then find 1 minus their ratio. For Manhattan, we sum absolute differences. Variables x and y stay unchanged. The distances are calculated step-by-step and output. Beginners often confuse cosine distance with length; it measures angle difference. Euclidean and Manhattan differ because one uses squares and root, the other sums absolute values. The code example uses scipy to compute these distances easily.

Practice

(1/5)
1. Which distance metric measures the straight-line distance between two points in space?
easy
A. Jaccard distance
B. Cosine distance
C. Manhattan distance
D. Euclidean distance

Solution

  1. Step 1: Understand distance types

    Euclidean distance is the direct straight-line distance between two points.
  2. Step 2: Compare with other distances

    Cosine measures angle difference, Manhattan sums absolute differences, Jaccard measures set similarity.
  3. Final Answer:

    Euclidean distance -> Option D
  4. Quick Check:

    Straight-line distance = Euclidean distance [OK]
Hint: Straight line means Euclidean distance [OK]
Common Mistakes:
  • Confusing cosine with Euclidean
  • Thinking Manhattan is straight-line
  • Mixing Jaccard with numeric distances
2. Which of the following is the correct way to import the Euclidean distance function from scipy?
easy
A. from scipy.spatial.distance import euclidean
B. import scipy.distance.euclidean
C. from scipy.distance import euclidean
D. import euclidean from scipy.spatial

Solution

  1. Step 1: Recall scipy import syntax

    The correct import path for distance functions is scipy.spatial.distance.
  2. Step 2: Check each option

    from scipy.spatial.distance import euclidean uses correct syntax: from scipy.spatial.distance import euclidean. Others are invalid or incorrect syntax.
  3. Final Answer:

    from scipy.spatial.distance import euclidean -> Option A
  4. Quick Check:

    Correct import path = from scipy.spatial.distance import euclidean [OK]
Hint: Use 'from scipy.spatial.distance import' for distance functions [OK]
Common Mistakes:
  • Using wrong module path
  • Incorrect import syntax
  • Trying to import from scipy.distance
3. What is the output of this code?
from scipy.spatial.distance import cosine
v1 = [1, 0, 1]
v2 = [0, 1, 0]
result = cosine(v1, v2)
print(round(result, 2))
medium
A. 1.0
B. 0.5
C. 0.0
D. 0.71

Solution

  1. Step 1: Calculate cosine similarity basics

    Vectors v1 and v2 are orthogonal (no overlap), so cosine similarity is 0.
  2. Step 2: Calculate cosine distance

    Cosine distance = 1 - cosine similarity = 1 - 0 = 1.0.
  3. Final Answer:

    1.0 -> Option A
  4. Quick Check:

    Orthogonal vectors cosine distance = 1.0 [OK]
Hint: Cosine distance = 1 - cosine similarity [OK]
Common Mistakes:
  • Confusing cosine similarity with distance
  • Rounding errors
  • Assuming zero distance for orthogonal vectors
4. Find the error in this code snippet calculating Manhattan distance:
from scipy.spatial.distance import manhattan
a = [1, 2, 3]
b = [4, 5]
print(manhattan(a, b))
medium
A. Function name should be cityblock, not manhattan
B. Import statement is incorrect
C. Lists a and b must be the same length
D. Manhattan distance requires numpy arrays, not lists

Solution

  1. Step 1: Check input vector lengths

    Vectors a and b have different lengths (3 and 2), which is invalid for distance calculation.
  2. Step 2: Validate function and import

    Import and function name are correct; scipy.spatial.distance.manhattan is valid and accepts lists.
  3. Final Answer:

    Lists a and b must be the same length -> Option C
  4. Quick Check:

    Equal length vectors needed for distance [OK]
Hint: Vectors must be same length for distance functions [OK]
Common Mistakes:
  • Assuming different length lists work
  • Confusing function name with cityblock
  • Thinking lists are invalid inputs
5. You have two points: p1 = [3, 4, 5] and p2 = [1, 1, 1]. Which distance metric will give the largest value?
Options:
A) Euclidean
B) Cosine
C) Manhattan
D) All equal
hard
A. Euclidean
B. Manhattan
C. Cosine
D. All equal

Solution

  1. Step 1: Calculate Euclidean distance

    Euclidean = sqrt((3-1)^2 + (4-1)^2 + (5-1)^2) = sqrt(4 + 9 + 16) = sqrt(29) ≈ 5.39.
  2. Step 2: Calculate Manhattan distance

    Manhattan = |3-1| + |4-1| + |5-1| = 2 + 3 + 4 = 9.
  3. Step 3: Calculate Cosine distance

    Cosine similarity = (3*1 + 4*1 + 5*1) / (sqrt(3^2+4^2+5^2)*sqrt(1^2+1^2+1^2)) = 12 / (7.07*1.73) ≈ 0.98; Cosine distance = 1 - 0.98 = 0.02.
  4. Final Answer:

    Manhattan -> Option B
  5. Quick Check:

    Manhattan distance > Euclidean > Cosine distance [OK]
Hint: Manhattan sums absolute differences, usually largest [OK]
Common Mistakes:
  • Assuming Euclidean is always largest
  • Confusing cosine distance scale
  • Ignoring absolute values in Manhattan
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