«  SOMz: Self Organizing Maps and random atlas   ::   Contents   ::   Other routines  »

Somz module

This is the SOMZ class in some detail, refer to the source code for more information and methods.

Module author: Matias Carrasco Kind

class SOMZ.SelfMap(X, Y, topology='grid', som_type='online', Ntop=28, iterations=30, periodic='no', dict_dim='', astart=0.8, aend=0.5, importance=None)

Create a som class instance

Parameters:
  • X (float) – Attributes array (all columns used)
  • Y (float) – Attribute to be predicted (not really needed, can be zeros)
  • topology (str) – Which 2D topology, ‘grid’, ‘hex’ or ‘sphere’
  • som_type (str) – Which updating scheme to use ‘online’ or ‘batch’
  • Ntop (int) – Size of map, for grid Size=Ntop*Ntop, for hex Size=Ntop*(Ntop+1[2]) if Ntop is even[odd] and for sphere Size=12*Ntop*Ntop and top must be power of 2
  • iterations (int) – Number of iteration the entire sample is processed
  • periodic (str) – Use periodic boundary conditions (‘yes’/’no’), valid for ‘hex’ and ‘grid’ only
  • dict_dim (dict) – dictionary with attributes names
  • astar (float) – Initial value of alpha
  • aend (float) – End value of alpha
  • importance (str) – Path to the file with importance ranking for attributes, default is none
create_map(evol='no', inputs_weights='')

This is same as above but uses python routines instead

create_mapF(evol='no', inputs_weights='')

This functions actually create the maps, it uses random values to initialize the weights It uses a Fortran subroutine compiled with f2py

evaluate_map(inputX='', inputY='')

This functions evaluates the map created using the input Y or a new Y (array of labeled attributes) It uses the X array passed or new data X as well, the map doesn’t change

Parameters:
  • inputX (float) – Use this if another set of values for X is wanted using the weigths already computed
  • inputY (float) – One dimensional array of the values to be assigned to each cell in the map based on the in-memory X passed
get_best(line)

Get the predictions given a line search, where the line is a vector of attributes per individual object for THE best cell

Parameters:line (float) – input data to look in the tree
Returns:array with the cell content
get_vals(line)

Get the predictions given a line search, where the line is a vector of attributes per individual object fot the 10 closest cells.

Parameters:line (float) – input data to look in the tree
Returns:array with the cell content
plot_map(min_m=-100, max_m=-100, colbar='yes')

Plots the map after evaluating, the cells are colored with the mean value inside each one of them

Parameters:
  • min_m (float) – Lower limit for coloring the cells, -100 uses min value
  • max_m (float) – Upper limit for coloring the cells, -100 uses max value
  • colbar (str) – Include a colorbar (‘yes’,’no’)
save_map(itn=-1, fileout='SOM', path='')

Saves the map

Parameters:
  • itn (int) – Number of map to be included on path, use -1 to ignore this number
  • fileout (str) – Name of output file
  • path (str) – path for the output file
save_map_dict(path='', fileout='SOM', itn=-1)

Saves the map in dictionary format

Parameters:
  • itn (int) – Number of map to be included on path, use -1 to ignore this number
  • fileout (str) – Name of output file
  • path (str) – path for the output file
som_best_cell(inputs, return_vals=1)

Return the closest cell to the input object It can return more than one value if needed

SOMZ.geometry(top, Ntop, periodic='no')

Pre-compute distances between cells in a given topology and store it on a distLib array

Parameters:
  • top (str) – Topology (‘grid’,’hex’,’sphere’)
  • Ntop (int) – Size of map, for grid Size=Ntop*Ntop, for hex Size=Ntop*(Ntop+1[2]) if Ntop is even[odd] and for sphere Size=12*Ntop*Ntop and top must be power of 2
  • periodic (str) – Use periodic boundary conditions (‘yes’/’no’), valid for ‘hex’ and ‘grid’ only
Returns:

2D array with distances pre computed between cells and total number of units

Return type:

2D float array, int

SOMZ.get_alpha(t, alphas, alphae, NT)

Get value of alpha at a given time

SOMZ.get_ns(ix, iy, nx, ny, index=False)

Get neighbors for rectangular grid given its coordinates and size of grid

Parameters:
  • ix (int) – Coordinate in the x-axis
  • iy (int) – Coordinate in the y-axis
  • nx (int) – Number fo cells along the x-axis
  • ny (int) – Number fo cells along the y-axis
  • index (bool) – Return indexes in the map format
Returns:

Array of indexes for direct neighbors

SOMZ.get_ns_hex(ix, iy, nx, ny, index=False)

Get neighbors for hexagonal grid given its coordinates and size of grid Same parameters as get_ns()

SOMZ.get_sigma(t, sigma0, sigmaf, NT)

Get value of sigma at a given time

SOMZ.h(bmu, mapD, sigma)

Neighborhood function which quantifies how much cells around the best matching one are modified

Parameters:
  • bmu (int) – best matching unit
  • mapD (float) – array of distances computed with geometry()
SOMZ.is_power_2(value)

Check if passed value is a power of 2

«  SOMz: Self Organizing Maps and random atlas   ::   Contents   ::   Other routines  »