Universidad Aútonoma De
Nuevo León
Facultad de Ingeniería Mecánica y
Eléctrica
Laboratorio
de Programación de Sistemas Adaptativos
Dra. Sara Elena Garza
Practica
#4
Jorge Alberto Sanchez Villanueva 1607211
Carlos Orlando Ramírez Rodriguéz 1460809
Daniel Alejandro Reyna Barrón 1414127
Oscar Daniel Arreguín Puente 1019950
Alfredo Yovany Ángeles Dominguez 1612260
Salón: 4-200
Hora: M5-M6
INTRODUCCION
Un agrupamiento es un conjunto de
grupos.
La diferencia entre agrupamiento y grupos, es que se puede restringir el acceso a un recurso o actividad únicamente a los miembros
de una agrupación.
De este modo será posible diseñar acciones,
interacciones, resultados o procesos personalizados.
Los agrupamientos generados
tienen por objeto encontrar características semejantes en cada agrupación.
Fig1.Ejemplo claro de
lo que son agrupamientos que basados en una característica
(En este caso las
letras) se forman diferentes grupos con las mismas características.
MARCO TEORICO
Existen diferentes tipos de agrupamiento según las
características de sus elementos.
A) Traslape: consiste en tener ciertas características en
sus componentes.
B) Jerárquico: se inicia con un solo grupo que incluye todas
las características y dentro de él se hacen divisiones para generar nuevos
C) Difuso: consiste en que un patrón puede tener niveles de
pertenencia a los distintos subgrupos
Hablando sobre el algoritmo que se
utiliza en estos casos que es el K-means nos dice que es uno de los algoritmos de
agrupamiento particionales más conocido y utilizado. Este algoritmo realiza la
asignación de elementos, dentro de k clúster definidos a
priori, basándose en el
criterio de la mínima distancia respecto del centroide de cada grupo, de tal
manera que cada uno de los clúster queda representado por la media (o
media ponderada) de sus puntos, es decir, por su centroide. K-means tiene una complejidad de O (nkl), donde n es el número de elementos, k es el número de clústers y l es
el número total de iteraciones necesarias para alcanzar la convergencia.
Una explicación
de este método seria por medio de este diagrama de flujo:
Fig2.Diagrama de
flujo del algoritmo K-means
DESARROLLO
Nuestro programa agrupar
series de televisión por sus características
Series
|
|||
|
Comedia
|
Acción
|
Romance
|
El príncipe de Bel Air
|
90
|
10
|
0
|
The Big Bang Tehory
|
80
|
20
|
0
|
Malcom
|
60
|
40
|
0
|
Aquí
se muestra los vectores que utilizamos para agrupar los grupos de series.
Los
vectores que vamos a agrupar y las características que elegimos están
expresadas en la tabla por simbología binaria.
1= Cuenta con esta característica
0= No cuenta con esta característica
import random
import math
def principal():
matriz=[]
for i in
range(3):
matriz.append(valpunt())
print("\n")
print(matriz)
for j in
range(len(matriz)):
s=0
for k
in range(len(matriz)):
s+=matriz[k][j]
c=s/3
print("El Centroide de: ",j," es: ",c)
def valpunt():
arr=[]
comedia=random.randrange(100)
accion=random.randrange(100)
romance=random.randrange(100)
arr.append(distancia(comedia))
arr.append(distancia(accion))
arr.append(distancia(romance))
print(comedia,accion,romance)
print(arr)
return arr
def distancia(val):
print("\n")
seriea=lambda x: math.sqrt((x-100)**2)
serieb=lambda x: math.sqrt((x-0)**2)
seriec=lambda x: math.sqrt((x-0)**2)
print(seriea(val),serieb(val),seriec(val))
seriea2=lambda x: math.sqrt((x-0)**2)
serieb2=lambda x: math.sqrt((x-100)**2)
seriec2=lambda x: math.sqrt((x-0)**2)
print(seriea2(val),serieb2(val),seriec2(val))
seriea=lambda x: math.sqrt((x-0)**2)
serieb=lambda x: math.sqrt((x-0)**2)
seriec=lambda x: math.sqrt((x-100)**2)
print(seriea(val),serieb(val),seriec(val))
print(seriea(val)+serieb(val)+seriec(val))
dis=(seriea(val)+serieb(val)+seriec(val))
return dis
principal()
Parámetros.
Reporta:
El
valor para k (cantidad de centroides/grupos) el valor de k es igual a 3 debido
a que pensamos que eran los centroides necesarios para estos
datos.
El
criterio de terminación (cuándo se detiene tu algoritmo).- se detiene al
momento de imprimir los resultados de los distintos grupos con sus respectivos
centroides.
Cuántas
corridas realizaste (cuántas veces ejecutaste
el algoritmo de agrupamiento).- alrededor de 5 veces con distintos
datos para probar si era aceptable el programa o que hacia lo que debía.
Resultados:
Ingresando
datos:
23.0 77.0 77.0
77.0 23.0 77.0
77.0 77.0 23.0
177.0
15.0 85.0 85.0
85.0 15.0 85.0
85.0 85.0 15.0
185.0
11.0 89.0 89.0
89.0 11.0 89.0
89.0 89.0 11.0
189.0
77 85 89
[177.0, 185.0, 189.0]
45.0 55.0 55.0
55.0 45.0 55.0
55.0 55.0 45.0
155.0
33.0 67.0 67.0
67.0 33.0 67.0
67.0 67.0 33.0
167.0
53.0 47.0 47.0
47.0 53.0 47.0
47.0 47.0 53.0
147.0
55 67 47
[155.0, 167.0, 147.0]
81.0 19.0 19.0
19.0 81.0 19.0
19.0 19.0 81.0
119.0
75.0 25.0 25.0
25.0 75.0 25.0
25.0 25.0 75.0
125.0
19.0 81.0 81.0
81.0 19.0 81.0
81.0 81.0 19.0
181.0
19 25 81
[119.0, 125.0, 181.0]
[[177.0, 185.0, 189.0], [155.0, 167.0,
147.0], [119.0, 125.0, 181.0]]
El Centroide de: 0
es: 150.33333333333334
El Centroide de: 1
es: 159.0
El Centroide de: 2
es: 172.33333333333334
>>>
En ejecución
Grupos encontrados
Conclusiones:
Este programa nos ha ayudado a comprender el uso de programas para ayudarnos
a crear grupos semejante , lo cual nos ayuda en una página de películas, una
tienda de música, agrupar grupos de alumnos, etc., Por lo cual el aprender a
usar estos métodos se ha vuelto de vital importancia, por lo que en esta
práctica nos sirvió de gran ayuda en el aprendizaje más amplio de este método
de agrupamiento, así como el hecho de poder entender esta clase de problemas,
para que en un futuro podamos resolverlos de una manera más óptima y sencilla.
No hay comentarios:
Publicar un comentario