This Hierarchical Clustering lesson is for a beginner. Read the short notes, run each example, then change one name or number and run it again.
Hierarchical clustering joins the closest points first, then joins those groups, until one group remains.
The example starts with the closest pair. You do not choose the number of groups up front.
Example 1: Start here
The first join is the pair with the smallest gap.
points = [1, 2, 9, 10] # a list; the values stay in this order
pairs = [(abs(points[i] - points[j]), points[i], points[j]) for i in range(len(points)) for j in range(i + 1, len(points))] # a list; the values stay in this order
print(min(pairs)) # the smallest value
Example 2: Add two rows
Hierarchical Clustering applies one operation to every number. zip pairs the rows, and the list keeps each sum.
left = [1, 2, 10] # a list; the values stay in this order
right = [10, 20, 30] # a list; the values stay in this order
print([a + b for a, b in zip(left, right)]) # pair the lists, then combine each pair
Example 3: Average a column
The average is the total divided by how many numbers you have. That is the same summary a statistics page starts with.
scores = [70, 10, 90] # a list; the values stay in this order
print(sum(scores) / len(scores)) # len counts the items
Example 4: Keep values above a line
A cutoff drops the low values. Change 80 and run the example again to see who remains.
scores = [70, 10, 90] # a list; the values stay in this order
print([score for score in scores if score >= 80]) # keep the items that pass the test
