How to perform Hierarchical Clustering using scikit-learn in Python?

share link

by Abdul Rawoof A R dot icon Updated: May 8, 2023

technology logo
technology logo

Solution Kit Solution Kit  

The Hierarchical Agglomerative clustering method is where objects within a group are similar. Hierarchical Agglomerative clustering differs from things in various other groups. We can represent it in a hierarchical clustering tree called a dendrogram. 

Types of Hierarchical Agglomerative Clustering:

  • Agglomerative Hierarchical clustering can make the agglomerative approach even clearer. There are many steps in the Agglomerative Hierarchical Clustering algorithm.
  • Divisive hierarchical clustering can understand as agglomerative clustering & divisive clustering. We need to understand the concepts of single linkage and complete linkage. The Python ecosystem's gold standard for ML to implement this Hierarchical Agglomerative clustering. We use a Python library called 'scikit-learn' for data analysis. 

In scikit-learn, we have linkages that are average and complete linkage. In Euclidean distance, single, average, and complete linkage can use new approaches. We can do it to affinities or distances. Manhattan distance or l1, Cityblock, cosine distance, or any other precomputed affinity matrix. Single, average, and complete linkage with different distances or affinities. Euclidean distance, Manhattan distance, Cityblock, or l1, cosine distance, or any affinity matrix. Single, average, and complete linkage with various distances or affinities. You can find Euclidean, Manhattan distance or Cityblock, cosine, or any affinity matrix. 

Clusters are data analysis method always explores the occurring groups within a dataset. Cluster analysis does not need to group data points into predefined groups. It means it is an unsupervised learning method. There are three types like Centroid-based, Density-based, Distribution-based, and Hierarchical clustering. Complete linkage strategies are one of several methods of agglomerative hierarchical clustering. The linkage function allows us to send forces and motion where needed.

The cluster pairs minimize this criterion and the ward. It minimizes the variance of the merged clusters. The complete or maximum linkage uses the maximum distances between it. To visualize the top-down approach, start from the top of the dendrogram and go down. To visualize the bottom-up approach, it will do the opposite, going down or moving upwards. Our baseline performance will depend on a Random Forest Regression algorithm. We can use the Decision Tree Regression as a supervised ML algorithm using the AutoML tool. It classifies or regresses the data using Boolean answers to certain queries. Its resulting structure is a tree with different nodes such as root, internal, and leaf. A connectivity matrix is nothing, but it is always a square matrix.

We can cluster the data points into one or more classes. We can do it depending on the similarity of different features. The difference lies in the way it works.

Scikit-learn or sklearn library: 

Python's Scikit-Learn library helps with data analysis. The Python ecosystem will be a gold standard for Machine Learning algorithms.

Characteristics of the Hierarchical Agglomerative Clustering:

  • Agglomerative Hierarchical clustering is an unsupervised machine-learning technique. It divides the population into several clusters. The clusters can be data points in the same cluster. They are almost similar, and data points in various clusters are dissimilar.
  • It works from the dissimilarities between the objects on the objects we want to group. It is a type of dissimilarity that suits the subject studied and the nature of the data or information.


  • In Agglomerative Hierarchical clustering, we do not have to pre-specify the clusters.
  • It will only work well on small amounts of data sets or huge datasets. 


  • Agglomerative Hierarchical clustering is suitable for more than large amounts of datasets. 
  • It is more complex than agglomerative hierarchical clustering. 

Here is an example of performing hierarchical clustering using scikit-learn in Python:

Fig: Preview of the output that you will get on running this code from your IDE.


In this solution, we are using scikit-learn library.


Follow the steps carefully to get the output easily.

  1. Install PyCharm Community Edition on your computer.
  2. Open terminal and install the required libraries with following commands.
  3. Install Scikit-learn - pip install scikit-learn.
  4. Create a new Python file(eg:
  5. Copy the snippet using the 'copy' button and paste it into that file(Use first 18 lines of code only).
  6. Then add print statement to the end line(refer preview of the output).
  7. Run the file using run button.

I hope you found this useful. I have added the link to dependent libraries, version information in the following sections.

I found this code snippet by searching for 'multi output regression or classifier python' in kandi. You can try any such use case!

Environment Tested

I tested this solution in the following versions. Be mindful of changes when working with other versions.

  1. The solution is created in PyCharm 2022.3.3.
  2. The solution is tested on Python 3.9.7.
  3. Scikit-learn version 1.2.2.

Using this solution, we are able to perform hierarchical clustering using scikit-learn in Python with simple steps. This process also facilities an easy way to use, hassle-free method to create a hands-on working version of code which would help us to perform hierarchical clustering using scikit-learn in Python.

Dependent Library

scikit-learnby scikit-learn

Python doticonstar image 54584 doticonVersion:1.2.2doticon
License: Permissive (BSD-3-Clause)

scikit-learn: machine learning in Python


            scikit-learnby scikit-learn

            Python doticon star image 54584 doticonVersion:1.2.2doticon License: Permissive (BSD-3-Clause)

            scikit-learn: machine learning in Python

                      You can also search for any dependent libraries on kandi like 'scikit-learn'.


                      1. What is Hierarchical Agglomerative Clustering? How does it differ from structured Ward hierarchical clustering? 

                      In hierarchical clustering, the sum of squares starts at zero and grows as we merge clusters. Whereas ward hierarchical clustering keeps this growth as small as possible. 

                      2. How is divisive hierarchical clustering different from agglomerative hierarchical clustering? 

                      We need to understand single and complete linkage concepts. The Agglomerative Hierarchical Clustering makes the agglomerative approach even clearer. Some steps of the Agglomerative Hierarchical Clustering (AHC) algorithm exist. At the same time, Divisive hierarchical clustering helps understand agglomerative clustering & divisive clustering. 

                      3. What criteria should I consider when selecting a newly joined cluster? 

                      It depends on the interpretation they expect to give to the term 'sensible,' and the type of clusters. Those are what we expected to underline in the data set. 

                      4. What are the advantages of using an agglomerative hierarchical approach over a divisive one? 

                      Divisive is complex than agglomerative hierarchical clustering because divisive clustering is more efficient. It happens if we don't generate a complete hierarchy down to individual data points. 

                      5. Can you explain the steps involved in the Hierarchical Agglomerative Clustering process? 

                      First, it computes the proximity matrix using a particular distance metric. Then each data point we assign to a cluster. Then it merges the clusters based on a metric for the similarity between the clusters. Finally, update the distance matrix. 


                      1. For any support on kandi solution kits, please use the chat
                      2. For further learning resources, visit the Open Weaver Community learning page.

                      See similar Kits and Libraries