7

Estoy buscando hexagonalself-organizing map en Python.
Hexagonal mapa de autoorganización en Python

hexagonal tiling

  1. módulo listo. Si uno existe
  2. manera de trazar célula hexagonal
  3. algoritmos para trabajar con celdas hexagonales como matriz o smth otro

Acerca de: Un mapa autoorganizado (SOM) o de auto-organización mapa de características (SOFM) es un tipo de red neuronal artificial que está entrenada usando aprendizaje no supervisado para producir una dimensión baja (típicamente bidimensional)

+0

@ S. Lott: Un mapa auto-organización es un algoritmo de AI. Ver http://en.wikipedia.org/wiki/Self-organizing_map – Zifre

+0

¿Qué estás buscando?¿Es esta una pregunta de IA sobre algoritmos autoorganizados, o una pregunta de gráficos sobre dibujar hexágonos o una pregunta de representación de datos sobre cómo representar un mosaico hexagonal de una superficie? –

Respuesta

6

No tengo una respuesta para el punto 1, pero algunas sugerencias para el punto 2 y 3. En su contexto, no está modelando un espacio físico en 2D, sino una co nceptual espacio con fichas que tienen 6 vecinos. Esto se puede modelar con azulejos cuadrados dispuestos en columnas con las columnas impares desplazadas verticalmente por la mitad del tamaño de un cuadrado. Voy a tratar de un diagrama ASCII:

___  ___  ___  
| |___| |___| |___ 
|___| |___| |___| | 
| |___| |___| |___| 
|___| |___| |___| | 
| |___| |___| |___| 
|___| |___| |___| | 
    |___| |___| |___| 

se puede ver fácilmente que cada cuadrado tiene 6 vecinos (excepto los que están en los bordes, por supuesto). Esto se modela fácilmente como una matriz 2D de cuadrados, y las reglas para calcular las coordenadas del cuadrado en la posición (i, j), siendo i la fila y j la columna son bastante simples:

si j es par :

(i+1, j), (i-1, j), (i, j-1), (i, j+1), (i-1, j-1), (i+1, j-1) 

si j es impar:

(i+1, j), (i-1, j), (i, j-1), (i, j+1), (i+1, j-1), (i+1, j+1) 

(los 4 primeros términos son idénticos)

6

sé que esta discusión es de 4 años de edad, sin embargo no he encontrar un answe satisfactoria r en la web.

Si tiene algo como una matriz de asignación de la entrada a la neurona y una matriz de 2 días relacionados con la ubicación de cada neurona.

Por ejemplo considerar algo como esto:

hits = array([1, 24, 14, 16, 6, 11, 8, 23, 15, 16, 15, 9, 20, 1, 3, 29, 4, 
       32, 22, 7, 26, 26, 35, 23, 7, 6, 11, 9, 18, 17, 22, 19, 34, 1, 
       36, 3, 31, 10, 22, 11, 21, 18, 29, 3, 6, 32, 15, 30, 27], 
      dtype=int32) 
centers = array([[ 1.5  , 0.8660254 ], 
       [ 2.5  , 0.8660254 ], 
       [ 3.5  , 0.8660254 ], 
       [ 4.5  , 0.8660254 ], 
       [ 5.5  , 0.8660254 ], 
       [ 6.5  , 0.8660254 ], 
       [ 1.  , 1.73205081], 
       [ 2.  , 1.73205081], 
       [ 3.  , 1.73205081], 
       [ 4.  , 1.73205081], 
       [ 5.  , 1.73205081], 
       [ 6.  , 1.73205081], 
       [ 1.5  , 2.59807621], 
       [ 2.5  , 2.59807621], 
       [ 3.5  , 2.59807621], 
       [ 4.5  , 2.59807621], 
       [ 5.5  , 2.59807621], 
       [ 6.5  , 2.59807621], 
       [ 1.  , 3.46410162], 
       [ 2.  , 3.46410162], 
       [ 3.  , 3.46410162], 
       [ 4.  , 3.46410162], 
       [ 5.  , 3.46410162], 
       [ 6.  , 3.46410162], 
       [ 1.5  , 4.33012702], 
       [ 2.5  , 4.33012702], 
       [ 3.5  , 4.33012702], 
       [ 4.5  , 4.33012702], 
       [ 5.5  , 4.33012702], 
       [ 6.5  , 4.33012702], 
       [ 1.  , 5.19615242], 
       [ 2.  , 5.19615242], 
       [ 3.  , 5.19615242], 
       [ 4.  , 5.19615242], 
       [ 5.  , 5.19615242], 
       [ 6.  , 5.19615242]]) 

Así I'do esta usando un el siguiente método:

from matplotlib import collections, transforms 
from matplotlib.colors import colorConverter 
from matplotlib import cm 
import matplotlib.pyplot as plt 
import numpy as np 

def plot_map(hits, n_centers, w=10): 
    """ 
    Plot Map 
    """ 

    fig = plt.figure(figsize=(w, .7 * w)) 
    ax = fig.add_subplot(111) 
    hits_count = np.histogram(hits, bins=n_centers.shape[0])[0] 
    # Discover difference between centers 
    collection = RegularPolyCollection(
     numsides=6, # a hexagon 
     rotation=0, sizes=((6.6*w)**2 ,), 
     edgecolors = (0, 0, 0, 1), 
     array= hits_count, 
     cmap = cm.winter, 
     offsets = n_centers, 
     transOffset = ax.transData, 
    ) 
    ax.axis('off') 
    ax.add_collection(collection, autolim=True) 
    ax.autoscale_view() 
    fig.colorbar(collection) 
    return ax 

_ = plot_map(som_classif, matrix) 

fin llegué esta salida:

enter image description here

EDITAR

Una versión actualizada de este código en https://stackoverflow.com/a/23811383/575734

Cuestiones relacionadas