Análisis de datos de prueba utilizando K-Means Clustering en Python

Este artículo muestra una ilustración del agrupamiento de K-means en una muestra de datos aleatorios utilizando la biblioteca open-cv.

Requisitos previos: Numpy , OpenCV, matplot-lib
Primero, visualicemos los datos de prueba con funciones múltiples usando la herramienta matplot-lib.

# importing required tools
import numpy as np
from matplotlib import pyplot as plt
  
# creating two test data
X = np.random.randint(10,35,(25,2))
Y = np.random.randint(55,70,(25,2))
Z = np.vstack((X,Y))
Z = Z.reshape((50,2))
  
# convert to np.float32
Z = np.float32(Z)
  
plt.xlabel('Test Data')
plt.ylabel('Z samples')
  
plt.hist(Z,256,[0,256])
  
plt.show()

Aquí ‘Z’ es una array de tamaño 100 y valores que van de 0 a 255. Ahora, transforme ‘z’ en un vector de columna. Será más útil cuando haya más de una característica presente. Luego cambie los datos al tipo np.float32.

Producción:

Ahora, aplique el algoritmo de agrupamiento k-Means al mismo ejemplo que en los datos de prueba anteriores y vea su comportamiento.
Pasos a seguir:
1) Primero, necesitamos establecer datos de prueba.
2) Definir criterios y aplicar kmeans().
3) Ahora separa los datos.
4) Finalmente Grafique los datos.

import numpy as np
import cv2
from matplotlib import pyplot as plt
  
X = np.random.randint(10,45,(25,2))
Y = np.random.randint(55,70,(25,2))
Z = np.vstack((X,Y))
  
# convert to np.float32
Z = np.float32(Z)
  
# define criteria and apply kmeans()
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
ret,label,center = cv2.kmeans(Z,2,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS)
  
# Now separate the data
A = Z[label.ravel()==0]
B = Z[label.ravel()==1]
  
# Plot the data
plt.scatter(A[:,0],A[:,1])
plt.scatter(B[:,0],B[:,1],c = 'r')
plt.scatter(center[:,0],center[:,1],s = 80,c = 'y', marker = 's')
plt.xlabel('Test Data'),plt.ylabel('Z samples')
plt.show()

Producción:

Este ejemplo pretende ilustrar dónde k-means producirá clústeres intuitivamente posibles.

Aplicaciones :
1) Identificación de datos cancerosos.
2) Predicción del Rendimiento Académico de los Estudiantes.
3) Predicción de actividad de fármacos.

Publicación traducida automáticamente

Artículo escrito por AFZAL ANSARI y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *