blog posts

What is unsupervised learning in Python? What is unsupervised learning?

In supervised learning, a machine is trained with labeled data. This means that all data is already labeled correctly. This can be compared to a student learning in the presence of a teacher. 

Machine learning can be broadly divided into supervised learning and unsupervised learning in Python .

Benefits of supervised learning in Python

Using supervised learning, new data can be collected or created based on past data. Performance metrics can be optimized based on experience. Supervised learning makes it possible to solve various computational problems in real environments.

The meaning of unsupervised learning in Python

Unsupervised learning is a machine learning method in which no monitoring is done on the model. In other words, the model is allowed to analyze the data itself and categorize the information. This is done with unlabeled data. Supervised learning has the ability to perform more complex activities than supervised learning. But the results are not very predictable.

Benefits of Unsupervised Learning in Python

  1. Using unsupervised learning, all the unknown patterns in the data can be discovered.
  2. Unsupervised learning is very useful for finding features that can be used in data categorization.
  3. All processes take place in a real-time environment, so all data is entered into the model and labeled in the presence of learners.
  4. It is very easy to get unlabeled data because most of the data is generated by a computer, but labeled data requires manpower.

How unsupervised learning works

Consider an example to illustrate how unsupervised learning, consider a baby and a pet dog. This child knows his pet dog and plays with him easily. Now an acquaintance has brought another dog with him to the baby’s house and his dog intends to play with that baby.

This baby does not know the dog, but you can see familiar features in him (such as ears, standing on 4 legs, etc.) that are similar to his dog. As a result, the baby will recognize the animal as a dog.

This method is called unsupervised learning, in which nothing is taught, but conclusions are drawn from previous data.

Prepare data for unsupervised learning with Python

We use the Iris database to easily understand the subject and estimate the data. There are 150 records in this data set that have 4 properties. These characteristics include petal length, petal width, sepal length, sepal width. The Iris data set has 3 classes: Setosa, Virginica and Versicolor. In this example, we will introduce all 4 properties of our flower to the unsupervised learning algorithm, and this model will identify which class each Iris belongs to.

In this example, the Python scikit-learn library is used to load Iris data and the matplotlib is used to visualize the data.

The following code is for data exploration and data preparation:


  1. Self: SETOSA
  2. Green: VERSICOLOR
  3. Yellow: VIRGINICA

Unsupervised learning in Python

Types of clusters

In data clustering, inputs are grouped into different groups that have the same properties.

Types of clusters in unsupervised learning in Python

  1. Right: Image of clustered data
  2. Left: Original data image

In the images above, the image on the left is for raw data without clustering, and the image on the right is for clustered data based on their properties. When an input is given to a model to estimate it, it finds a suitable cluster for it according to its characteristics. This is called estimating or clustering data.

K-means clustering in Python

K-means clustering is an iterative clustering algorithm that aims to find the local maximum in each iteration. At the beginning, the appropriate number of clusters is selected. In our example there are 3 classes, so we design the algorithm to divide the data into three groups. To do this we must use the n_clusters command.

We randomly place three points in three clusters. Based on the geometric center distance of the points from each other, the next inputs are categorized in their respective clusters, and each time the geometric center distance is recalculated for all clusters.

The geometric centroid of each cluster is a set of properties that define the resulting group. By examining the geometric centrifugal weight, we can understand the characteristics of each cluster.

In this example, using the scikit-learn library, we enter the K-means clustering model into the program, identify its properties, and perform the estimation operation.

Implementation of K-means clustering in Python


Hierarchical clustering in Python

As the name implies, hierarchical clustering is an algorithm that categorizes clusters hierarchically. This algorithm starts with the data assigned to a cluster.

In the next step, the two clusters that are closest to each other are merged. This algorithm ends when there is only one cluster left.

The result of hierarchical clustering can be represented using a dendrogram. For example, we used the Grain database.

Implementation of hierarchical clustering



Dendrogram output of hierarchical clustering algorithm

Clustering differences, hierarchical clustering and K-means clustering

Hierarchical clustering is not very suitable for big data, but K-means clustering is easy to estimate big data. This is due to the linear temporal complexity (O (n) in K-means clustering, while the temporal complexity of the hierarchical clustering is exponentially (O (n2).

K-means clustering performs clusters randomly. If the algorithm is run multiple times, different results will be obtained. But in hierarchical clustering the result will be the same.

The results show that K-means clustering works best when clusters are in the shape of a multidimensional sphere (such as a circle in two dimensions or a sphere in three dimensions).

Types of data clustering

Noise data cannot be used in K-means clustering, but noise data can be used directly in hierarchical clustering.

T-SNE clustering

One of the illustrated unsupervised learning methods is T-SNE clustering algorithm. This algorithm can convert multidimensional space into two or three dimensional space and visualize it. In this model, the placement of multidimensional objects in two or three dimensions is next to each other in such a way that the same points are placed next to each other and different points are placed farther apart.

Implementation of T-SNE clustering



Implementation of T-SNE clustering in unsupervised learning in Python


  1. Self: SETOSA
  2. Green: VERSICOLOR
  3. Yellow: VIRGINICA

DBSCAN clustering

Spatial clustering based on distance density using noise data, abbreviated as DBSCAN clustering, is one of the most popular methods used as an alternative to the K-means clustering method. To work with this algorithm, we do not need to specify the required number of clusters, but we must specify two other parameters.

Although the implementation of this model uses the scikit-learn library to set the values ​​of the eps and min_samples parameters by default, you usually need to set these parameters as well. The eps parameter represents the maximum distance between two points in a cluster. The min_samples parameter is the smallest number in a neighborhood that can be considered a cluster.

Implement DBSCAN clustering



Implementation of DBSCAN clustering in unsupervised learning in Python


Other methods of unsupervised learning in Python include:

  1. PCA or principal component analysis
  2. Diagnosis of anomalies
  3. Automatic
  4. Deep neural network
  5. Learning the method of Heb theory
  6. Contrasting Generating Neural Networks or GAN
  7. Self-organizing maps