0% found this document useful (0 votes)
5 views30 pages

Hierarchical Clustering in Python Guide

The document provides an overview of hierarchical clustering in Python, detailing methods for creating distance matrices, cluster labels, and visualizing clusters using libraries like Matplotlib and Seaborn. It discusses various linkage methods for clustering, the importance of dendrograms for visualizing cluster compositions, and the limitations regarding the speed of hierarchical clustering with larger datasets. Additionally, it emphasizes the need to choose the appropriate method based on data distribution and offers practical exercises for better understanding.

Uploaded by

簡維萱
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views30 pages

Hierarchical Clustering in Python Guide

The document provides an overview of hierarchical clustering in Python, detailing methods for creating distance matrices, cluster labels, and visualizing clusters using libraries like Matplotlib and Seaborn. It discusses various linkage methods for clustering, the importance of dendrograms for visualizing cluster compositions, and the limitations regarding the speed of hierarchical clustering with larger datasets. Additionally, it emphasizes the need to choose the appropriate method based on data distribution and offers practical exercises for better understanding.

Uploaded by

簡維萱
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Basics of

hierarchical
clustering
C L U S TE R AN ALYS I S I N P YTH ON

Shaumik Daityari
Business Analyst
Creating a distance matrix using linkage
[Link](observations,
method='single',
metric='euclidean',
optimal_ordering=False
)

method : how to calculate the proximity of clusters

metric : distance metric

optimal_ordering : order data points

CLUSTER ANALYSIS IN PYTHON


Which method should use?
single: based on two closest objects

complete: based on two farthest objects

average: based on the arithmetic mean of all objects

centroid: based on the geometric mean of all objects

median: based on the median of all objects

ward: based on the sum of squares

CLUSTER ANALYSIS IN PYTHON


Create cluster labels with fcluster
[Link](distance_matrix,
num_clusters,
criterion
)

distance_matrix : output of linkage() method

num_clusters : number of clusters

criterion : how to decide thresholds to form clusters

CLUSTER ANALYSIS IN PYTHON


Hierarchical clustering with ward method

CLUSTER ANALYSIS IN PYTHON


Hierarchical clustering with single method

CLUSTER ANALYSIS IN PYTHON


Hierarchical clustering with complete method

CLUSTER ANALYSIS IN PYTHON


Final thoughts on selecting a method
No one right method for all

Need to carefully understand the distribution of data

CLUSTER ANALYSIS IN PYTHON


Let's try some
exercises
C L U S TE R AN ALYS I S I N P YTH ON
Visualize clusters
C L U S TE R AN ALYS I S I N P YTH ON

Shaumik Daityari
Business Analyst
Why visualize clusters?
Try to make sense of the clusters formed

An additional step in validation of clusters

Spot trends in data

CLUSTER ANALYSIS IN PYTHON


An introduction to seaborn
seaborn : a Python data visualization library based on matplotlib

Has be er, easily modi able aesthetics than matplotlib!

Contains functions that make data visualization tasks easy in the context of data analytics

Use case for clustering: hue parameter for plots

CLUSTER ANALYSIS IN PYTHON


Visualize clusters with matplotlib
from matplotlib import pyplot as plt

df = [Link]({'x': [2, 3, 5, 6, 2],


'y': [1, 1, 5, 5, 2],
'labels': ['A', 'A', 'B', 'B', 'A']})
colors = {'A':'red', 'B':'blue'}
[Link](x='x',
y='y',
c=df['labels'].apply(lambda x: colors[x]))
[Link]()

CLUSTER ANALYSIS IN PYTHON


Visualize clusters with seaborn
from matplotlib import pyplot as plt
import seaborn as sns

df = [Link]({'x': [2, 3, 5, 6, 2],


'y': [1, 1, 5, 5, 2],
'labels': ['A', 'A', 'B', 'B', 'A']})
[Link](x='x',
y='y',
hue='labels',
data=df)
[Link]()

CLUSTER ANALYSIS IN PYTHON


Comparison of both methods of visualization
MATPLOTLIB PLOT SEABORN PLOT

CLUSTER ANALYSIS IN PYTHON


Next up: Try some
visualizations
C L U S TE R AN ALYS I S I N P YTH ON
How many clusters?
C L U S TE R AN ALYS I S I N P YTH ON

Shaumik Daityari
Business Analyst
Introduction to dendrograms
Strategy till now - decide clusters on visual
inspection

Dendrograms help in showing progressions


as clusters are merged

A dendrogram is a branching diagram that


demonstrates how each cluster is
composed by branching out into its child
nodes

CLUSTER ANALYSIS IN PYTHON


Create a dendrogram in SciPy
from [Link] import dendrogram

Z = linkage(df[['x_whiten', 'y_whiten']],
method='ward',
metric='euclidean')
dn = dendrogram(Z)
[Link]()

CLUSTER ANALYSIS IN PYTHON


CLUSTER ANALYSIS IN PYTHON
CLUSTER ANALYSIS IN PYTHON
CLUSTER ANALYSIS IN PYTHON
CLUSTER ANALYSIS IN PYTHON
CLUSTER ANALYSIS IN PYTHON
Next up - try some
exercises
C L U S TE R AN ALYS I S I N P YTH ON
Limitations of
hierarchical
clustering
C L U S TE R AN ALYS I S I N P YTH ON

Shaumik Daityari
Business Analyst
Measuring speed in hierarchical clustering
timeit module

Measure the speed of .linkage() method

Use randomly generated points

Run various iterations to extrapolate

CLUSTER ANALYSIS IN PYTHON


Use of timeit module
from [Link] import linkage
import pandas as pd
import random, timeit
points = 100
df = [Link]({'x': [Link](range(0, points), points),
'y': [Link](range(0, points), points)})
%timeit linkage(df[['x', 'y']], method = 'ward', metric = 'euclidean')

1.02 ms ± 133 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

CLUSTER ANALYSIS IN PYTHON


Comparison of runtime of linkage method
Increasing runtime with data points

Quadratic increase of runtime

Not feasible for large datasets

CLUSTER ANALYSIS IN PYTHON


Next up - exercises
C L U S TE R AN ALYS I S I N P YTH ON

You might also like