Sei sulla pagina 1di 16

SEP SNEST DGEST

INSTITUTO TECNOLÓGICO DE TOLUCA

ASIGNATURA:
Inteligencia Artificial

Unidad 1
Practica: Agrupamientos

Alumnos:
Dominguez Cruz Carlos Asahel
García López Absalon Cael
Samayoa Monroy Bruno

Docente:
Carlos Mauricio Castorena Lara

Metepec a 15 de septiembre del 2019

Introducción
¿Qué es un algoritmo?
Como algoritmo denominamos un conjunto ordenado y finito de
operaciones simples a través del cual podemos hallar la
solución a un problema.
Los algoritmos nos permiten ejecutar una acción o resolver un
problema mediante una serie de instrucciones definidas,
ordenadas y finitas. Así, dado un estado inicial y una
entrada, y siguiendo los sucesivos pasos indicados, se llega
al estado final y se obtiene una solución.
¿Qué es agrupar?
Reunir en un grupo elementos o personas que tienen
propiedades o características en común o siguiendo un
determinado criterio o fin.
¿Qué es K-Means?
K-Means (traducido como K-Medias en español), es un método de
agrupamiento o clustering.
El clustering es una técnica para encontrar y clasificar K
grupos de datos (clusters). Así, los elementos que comparten
características semejantes estarán juntos en un mismo grupo,
separados de los otros grupos con los que no comparten
características.
Para saber si los datos son parecidos o diferentes el
algoritmo K-medias utiliza la distancia entre los datos. Las
observaciones que se parecen tendrán una menor distancia
entre ellas. En general, como medida se utiliza la distancia
euclideana aunque también se pueden utilizar otras funciones.
Objetivo
El objetivo de la práctica es entender el algoritmo de
agrupamiento K Means, asi como mostrar paso por paso los
procesos que involucra, entender su funcionamiento, observar
como las librerías de Python
requeridas(Numpy,Pandas,MatPlot,ScikitLearn) nos ayudan y
facilitan para su implementacion y visualizar para
familiarizarnos con los métodos de dichas librerias para
lograr dicha práctica dándonos una idea mas clara de cómo
aplicarlo.

El objeto del algoritmo K-Means es resolver un problema


de optimización, siendo la función a optimizar (minimizar) la
suma de las distancias cuadráticas de cada objeto al centroide
de su clúster.

Método

Como ya se explicó anteriormente el algoritmo K-MEANS agrupa


objetos en k grupos basándose en sus características, se realiza
minimizando la suma de distancias entre cada objeto y el
centroide de su grupo o clúster se suele usar la distancia
cuadrática para calcular esta.
Los elementos que comparten características semejantes estarán
juntos en grupos separados de los que no compartan ese grupo
K Means utiliza la distancia entre los datos, las observaciones
que se parezcan tendrán menor distancia entre ellos
Como medida se utiliza la distancia euclidiana aunque también se
pueden utilizar otras funciones.
Corresponde a un algoritmo iterativo
Como desventaja primordial tenemos que necesitar un dato de
entrada para definir el número de grupos en los que vamos a
segmentar la población y no siempre convergen a la posición
optima de los centro y se debe correr el algoritmo varias veces
para obtener mejores resultados.

Consta de 3 pasos
1.- Inicialización Una vez escogido el número de grupos k se
establecen los centroides en el espacio de datos por ejemplo
escogiéndolos aleatoriamente
2.- Asignación de objetos: cada objeto de datos es asignado a
su centroide más cercano.
3.- Actualización de centroides: se actualiza la posición del
centroide de cada grupo tomando como nuevo centroide la posición
del parámetro de los objetos pertenecientes a dicho grupo
Se repiten los pasos 2 y 3 y el algoritmo acaba hasta que los
centroides no se muevan o se muevan por debajo de una distancia
umbral en cada paso y cuando no cambien de grupo.
Algunas aplicaciones de este algoritmo son:

Segmentacion de clientes
Agrupacion de tetos que habla de temas similares
Geo estadística
Comunidades de redes sociales
Consta de 3 pasos
Paso de asignación de datos
Paso de actualización

En la práctica hecha en clase utilizamos el algoritmo K-Means


para que clasificara datos de arreglos en graficas de dos
dimensiones.
Importamos las librerías y funciones necesarias que contienen las
funciones del método K-Means y además la librería para cargar las
imágenes.
Generamos datos aleatorios para 3 clústers y los representamos.
Se agruparon los puntos con K-Means usando k como parámetro.
Se dibujan los puntos y los centroides utilizando un color
distinto para los puntos de cada cluster.
Pudimos observar como se sorteando los centroides, luego se le
asignaban puntos a lo centroides y luego se van reubicando los
centroides
Observamos cómo se fueron reasignando los puntos y reubicando
hasta generar una gráfica de puntos con los centroides ya
ubicados y haciendo distinción de los 3 grupos formados.

A continuación se hará un breve resumen de los pasos que se


siguieron en la clase práctica:
Se hicieron las importaciones de las librerías,Numpy(Numeral
Python) que proporciona estructuras de datos de matrices y
matrices multidimensionales garantiza cálculos efectivos con
matrices, se utiliza esta librería porque sus estructuras de
datos son mas eficientes que las de Python ya que ocupan menos
memoria, son mas rapidas y hace operaciones con matrices sin
requerir ciclos for, en este caso se le importo y se guardo su
referencia con np que es el nombre usual con el que se hace.
Otra librería importada es Pandas el cual es un paquete que
ofrece estructuras de datos que sirven para cargar, modelar,
analizar, manipular y preparar datos.
Su estructura principal es el DataFrame aunque en esta práctica
no se utiliza cabe mencionarlo ya que es la más usual, en esta
práctica se guardó su referencia con pd que es el nombre usual
con el que se hace.
Otra librería utilizada importante es MatPlotLib la cual sirve
para la visualización y trazado de graficas 2D,plt es el nombre
con el que se le suele guardar su referencia.
Por ultimo una de las librerías mas importantes es ScikitLearn
que proporciona una gama de algoritmos de aprendizaje supervizado
y no supervisado, mencionando a estos últimos, el que se utilizo
fue K-Means.
Se importó también el conjunto de datos iris el cual contiene
llaves o keys en ingles el cual nos sirve para clasificar datos.
Podemos ver que en la variable iris se cargan los datos de iris y
en la variable datosCompletos se crea un objeto matriz con el
método array() de la librería Numpy el cual contendrá las llaves
de datos y se imprimen estos valores.
A continuación se cargan las coordenadas en X y Y de los datos y
se fija un radio de .3 para el ejercicio.

Podemos observar que se hizo una lista de listas con los valores
de x y y por medio del método zip() y del método list(), como si
fueran argumentos del método array(), todo esto se guardó en la
variable X la cual por lo general casi siempre se utiliza en
mayúsculas, esta se considera una nomenclatura.
A continuación podemos observar que se hace el agrupamiento con
el método KMeans(), dentro de este se le definen el número de
clusters o el número de agrupaciones que tendrá el algoritmo
En la línea 4 y 5 podemos observar que se ajustan los datos con
el método fit() y con el método predict() podemos manipular la
información más fácil.
El método clister_centers_ es un método basado en centroides ,
con el cual se estima la distancia menor entre el punto vecino y
esos son los que quedan a menor distancia, los que se agruparan
en un solo clúster.
En los siguientes renglones se definen los colores para las
gráficas de dispersión usando el método plot() se especifica que
se va a trazar una función, scatter() es el nombre de la gráfica
de dispersión, así se indica que se utilizara esa gráfica, vemos
que se utiliza una X para dibujar los centroides. Y con show se
imprime la gráfica.
Dando como resultado la siguiente gráfica.

RESULTADOS
Como se ha visto, en esta practico se uso el lenguaje de
programacion Python, en un inicio debemos importar nuestras
librerías para que nuestros siguientes bloques puedan
ejecutarse la manera en que se realiza la importación usamos
la palabra reservada “Import” en seguida de el nombre de la
librería como por ejemplo

Búsqueda de clusters

Dentro del siguiente código insertamos un grupo de número que


representan nuestras coordenadas y en donde los clusters le
hemos designado 3 (Lo máximo de clusters que puede soportar
son 6) los cuales representan los grupos de pixeles con los
que trabajara este algoritmo su código es el siguiente

En el área de “colors” designamos los colores con los que


representara nuestros grupos

A continuación para la práctica debemos de importar imagines


desde “Drive” a nuestra mesa de trabajo para eso requerimos la
siguiente librería
y el código para poder importar la imagen es el siguiente

En esta parte le decimos que buscara una imagen que se


encuentra en nuestro “Drive” personal con el nombre de
“manzanaplatano.png” es importante mencionar que la imagen si
usa un formato diferente de imagen se debe colocar ya que si
no se realiza esto la imagen no aparecerá, el resultado que
se tubo con este código es el siguiente

A continuación con el siguiente código podemos pedir segmentes


que contenga nuestra imagen
Para poder ver estos datos de manera gráfica es decir En

una gráfica de datos debemos usar las siguientes


librerías las cuales mostraran estos datos en un plano
3D

el código que requerimos para poder realizar


nuestra grafica es el siguiente este nos
permite crear nuestra figura
fig = plt.figure()

Nos permite agregar un plano 3D


ax1 = fig.add_subplot(111,projection='3d')

Definimos los
datos en 2D
x=np.array(datos
[:,2])
y=np.array(datos[:,0])
z=np.array(datos[:,1])

este toma nuestros datos de 2D y los


implementa en un nuevo plano 3D
ax1.scatter(x, y, z, c='g', marker='.')

este solo permite visualizar nuestra grafica


con los datos que Hemos ingresado plt.show()

Nuestro resultado es el siguiente


Esta es la forma en que se representan nuestros datos agregados
anterior mente de una forma 3
A continuación podemos transformar estos datos de nuevo en una
grafica 2D a diferencia de lo anterior es te no solo muestras
los datos sino que también se muestran agregados a sus clusters
correspondientes para poder realizar esta grafica utilizamos la
siguiente sintaxis

el siguiente resultado

(Imagen 1) (Imagen 2)

En la (imagen 1) podemos ver como este trabaja recopilando


varios datos y así formando grupos demasiados grandes, En
la (Imagen 2) podemos ver claramente como trabajan
nuestros clusters al contar con pocos datos de igual
manera los agrupa en su cluster mas cercano

Parar que nuestro código pueda buscar imágenes y


reconstruirlas aremos uso de la siguiente sintaxis Búsqueda
en la parte de búsqueda pediremos como ejemplo que encuentre la
manzana
Ahora para reconstruir nuestra imagen con los datos
que hemos definido haremos uso de:
Ahora tras usar esta sintaxis nuestro resultado es el
siguiente:

En donde a capturado los pixeles de la manzana


combinándola con el fondo.

Conclusión
K-Means es un algoritmo de clustering que Se utiliza
cuando tenemos un montón de datos sin etiquetar. El
objetivo de este algoritmo es el de encontrar «K»
grupos (clusters) entre los datos crudos por lo que es
una muy buena herramienta cuando tratamos de datos de
manera impresionante.
Una de las desventajas como ya se observó en la
práctica es que al tratar con una cantidad de grande
de datos tiene un margen de error entre sus
agrupaciones y que se debe especificar el número de
clústeres para iniciar el algoritmo.

Referencias

https://www.definiciones-de.com/Definicion/de/agrupar.php © Definiciones-
de.com
https://estrategiastrading.com/k-means/
https://www.aprendemachinelearning.com/k-means-en-python-paso-a-paso/
https://es.coursera.org/lecture/mineria-de-datos-introduccion/ejemplo-
algoritmo-k-means-d0fgs
https://towardsdatascience.com/machine-learning-algorithms-part-9-k-
means-example-in-python-f2ad05ed5203?gi=6854d0d5b267

Potrebbero piacerti anche