Mean Shift clustering draft

Last modified 2 years ago / Edit on Github
The last modifications of this post were around 2 years ago, some information may be outdated!
This is a draft, the content is not complete and of poor quality!


  • Mean-Shift assigns the data points to the clusters iteratively by shifting points towards the mode (mode is the highest density of data points in the region, in the context of the Meanshift)

  • Non-Parametric Density Estimation.

  • The data points are sampled from an underlying PDF (Probability density function)[ref].

    Data point density implies PDF
    Data point density implies PDF.

  • Mean-shift built based on the idea of Kernel Density Estimation.

  • Mean shift exploits this KDE idea by imagining what the points would do if they all climbed up hill to the nearest peak on the KDE surface. It does so by iteratively shifting each point uphill until it reaches a peak[ref].

    Points climb to the nearest hill.
    Points climb to the nearest hill.

    Points climb to the nearest hill.
    Points climb to the nearest hill.


  • Image processing and computer vision.
  • Image Segmentation Application[ref].

Pros & Cons

  • Pros: Non-Parametric Density Estimation.
  • Cons: It's computationally expensive O(n²) [ref].


from sklearn.cluster import MeanShift
clustering = MeanShift(bandwidth=2).fit(X)
# or


  • clustering.labels_: clusters' labels.

Usage example


Support Thi Support Thi