Python implements mean-shift clustering algorithm

The examples in this article share the specific code of python to implement the mean-shift clustering algorithm for your reference. The specific content is as follows

1、 Create a new MeanShift.py file

import numpy as np

# Define a preset threshold
STOP_THRESHOLD =1e-4
CLUSTER_THRESHOLD =1e-1

# Define the measurement function
def distance(a, b):return np.linalg.norm(np.array(a)- np.array(b))

# Define Gaussian kernel function
def gaussian_kernel(distance, bandwidth):return(1/(bandwidth * np.sqrt(2* np.pi)))* np.exp(-0.5*((distance / bandwidth))**2)

# mean_shift class
classmean_shift(object):
 def __init__(self, kernel=gaussian_kernel):
 self.kernel = kernel

 def fit(self, points, kernel_bandwidth):

 shift_points = np.array(points)
 shifting =[True]* points.shape[0]while True:
 max_dist =0for i inrange(0,len(shift_points)):if not shifting[i]:continue
 p_shift_init = shift_points[i].copy()
 shift_points[i]= self._shift_point(shift_points[i], points, kernel_bandwidth)
 dist =distance(shift_points[i], p_shift_init)
 max_dist =max(max_dist, dist)
 shifting[i]= dist   STOP_THRESHOLD

 if(max_dist < STOP_THRESHOLD):break
 cluster_ids = self._cluster_points(shift_points.tolist())return shift_points, cluster_ids

 def _shift_point(self, point, points, kernel_bandwidth):
 shift_x =0.0
 shift_y =0.0
 scale =0.0for p in points:
 dist =distance(point, p)
 weight = self.kernel(dist, kernel_bandwidth)
 shift_x += p[0]* weight
 shift_y += p[1]* weight
 scale += weight
 shift_x = shift_x / scale
 shift_y = shift_y / scale
 return[shift_x, shift_y]

 def _cluster_points(self, points):
 cluster_ids =[]
 cluster_idx =0
 cluster_centers =[]for i, point inenumerate(points):if(len(cluster_ids)==0):
 cluster_ids.append(cluster_idx)
 cluster_centers.append(point)
 cluster_idx +=1else:for center in cluster_centers:
  dist =distance(point, center)if(dist < CLUSTER_THRESHOLD):
  cluster_ids.append(cluster_centers.index(center))if(len(cluster_ids)< i +1):
  cluster_ids.append(cluster_idx)
  cluster_centers.append(point)
  cluster_idx +=1return cluster_ids

2、 Call the above py file

# - *- coding: utf-8-*-"""
Created on Tue Oct 0911:02:082018

@ author: muli
"""

from sklearn.datasets.samples_generator import make_blobs
import matplotlib.pyplot as plt 
import random
import numpy as np
import MeanShift

def colors(n):
 ret =[]for i inrange(n):
 ret.append((random.uniform(0,1), random.uniform(0,1), random.uniform(0,1)))return ret

def main():
 centers =[[-1,-1],[-1,1],[1,-1],[1,1]]
 X, _ =make_blobs(n_samples=300, centers=centers, cluster_std=0.4)

 mean_shifter = MeanShift.mean_shift()
 _, mean_shift_result = mean_shifter.fit(X, kernel_bandwidth=0.5)

 np.set_printoptions(precision=3)print('input: {}'.format(X))print('assined clusters: {}'.format(mean_shift_result))
 color =colors(np.unique(mean_shift_result).size)for i inrange(len(mean_shift_result)):
 plt.scatter(X[i,0], X[i,1], color = color[mean_shift_result[i]])
 plt.show()if __name__ =='__main__':main()

The result is shown in the figure:

Reference link

The above is the whole content of this article, I hope it will be helpful to everyone's study.

Recommended Posts

Python implements mean-shift clustering algorithm
Python classic algorithm
Python implements tic-tac-toe game
Python implements tic-tac-toe game
Python implements man-machine gobang
Python implements Tetris game
Python implements image stitching
Python implements minesweeper game
Python implements scanning tools
Python implements threshold regression
Python implements minesweeper games
Python implements electronic dictionary
Python implements guessing game
Python implements simple tank battle
Python implements udp chat window
Python implements WeChat airplane game
Python implements word guessing game
Python implements parking management system
Python implements digital bomb game
Python implements TCP file transfer
Python numpy implements rolling case
OpenCV Python implements puzzle games
Python implements simple tic-tac-toe game
Python implements password strength verification
Python implements car management system
Python implements code block folding
Python implements panoramic image stitching
Python data structure and algorithm
Python implements multi-dimensional array sorting
How Python implements FTP function
Python implements verification code recognition
Python implements gradient descent method
Python implements text version minesweeper
Python implements image stitching function
Python implements the brick-and-mortar game
Python implements student performance evaluation system
How Python implements the mail function
Python simply implements the snake game
FM algorithm analysis and Python implementation
Detailed sorting algorithm (implemented in Python)
Python implements exchange rate conversion operations
Python implements string and number splicing
Python implements ten classic sorting algorithms
Python implements a universal web framework
Python implements the steepest descent method
Python implements the actual banking system
Python implements digital bomb game program
Python implements ftp file transfer function
Python implements username and password verification
How Python implements the timer function
Python implements the aircraft war project
Implementation of python gradient descent algorithm
Python implements horizontal stitching of pictures
Python implements GIF graph upside down