0% found this document useful (0 votes)
60 views4 pages

Mean Shift 3

Mean Shift Clustering is an unsupervised machine learning algorithm that clusters data points based on density. It uses a mean shift procedure to shift data points to the mean of nearby points to identify dense regions that form natural clusters. The mean_shift.py module implements mean shift clustering in Python and returns the original points, shifted points, and cluster assignments. It can use a Gaussian kernel and allows customizing the kernel type and bandwidth. Examples demonstrate plotting the results and using it for image segmentation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views4 pages

Mean Shift 3

Mean Shift Clustering is an unsupervised machine learning algorithm that clusters data points based on density. It uses a mean shift procedure to shift data points to the mean of nearby points to identify dense regions that form natural clusters. The mean_shift.py module implements mean shift clustering in Python and returns the original points, shifted points, and cluster assignments. It can use a Gaussian kernel and allows customizing the kernel type and bandwidth. Examples demonstrate plotting the results and using it for image segmentation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
You are on page 1/ 4

Mean Shift Clustering

MeanShift_py is a simple implementation of mean shift clustering in python.

Dependencies

The only dependency is Numpy

Description

The mean_shift.py module defines a class called MeanShift. The MeanShift class constructor takes in an
optional kernel parameter. If no kernel is specified, a default Gaussian kernel is used.

The cluster method requires an array of points and a kernel bandwidth value. A optional
iteration_callback function can also be passed in that will be called back at the end of each mean shift
iteration with the current state of the algorithm (e.g., where the points are currently at, along with an
iteration number).

After the clustering finishes, a MeanShiftResult object is returned, containing three arrays:

The original points

The shifted points

Cluster assignments for each point

Usage

import mean_shift as ms
data = get_data_from_somewhere()

mean_shifter = ms.MeanShift()

mean_shift_result = mean_shifter.cluster(data, kernel_bandwidth = 10)

original_points = mean_shift_result.original_points

shifted_points = mean_shift_result.shifted_points

cluster_assignments = mean_shift_result.cluster_ids

# If you want to use multivariate gaussian kernel

# By default it uses unviariate gaussian kernel

# Make sure the dimensions of 'data' and the kernel match

mean_shifter = ms.MeanShift(kernel='multivariate_gaussian')

mean_shift_result = mean_shifter.cluster(data, kernel_bandwidth = [10,20,30])

Example

Plotting Into Graph

This is example using matplotlib to plot graphs

import mean_shift as ms

import matplotlib.pyplot as plt

import numpy as np

data = np.genfromtxt('data.csv', delimiter=',')


mean_shifter = ms.MeanShift()

mean_shift_result = mean_shifter.cluster(data, kernel_bandwidth = 1)

original_points = mean_shift_result.original_points

shifted_points = mean_shift_result.shifted_points

cluster_assignments = mean_shift_result.cluster_ids

x = original_points[:,0]

y = original_points[:,1]

Cluster = cluster_assignments

centers = shifted_points

fig = plt.figure()

ax = fig.add_subplot(111)

scatter = ax.scatter(x,y,c=Cluster,s=50)

for i,j in centers:

ax.scatter(i,j,s=50,c='red',marker='+')

ax.set_xlabel('x')

ax.set_ylabel('y')

plt.colorbar(scatter)

fig.savefig("mean_shift_result")

Image Segmentation
Mean shift can be used for image segmentation. Below is an example of an image being mean shift
clustered in 3D RGB space, resulting in 7 clusters.

You might also like