Project

som

0.0
No commit activity in last 3 years
No release in over 3 years
A Self Organising Map
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 1.2.9
 Project Readme

SOM - Self Organising Map¶ ↑

A pure Ruby implementation of the Self Organising Map machine learning algorithm.

Install¶ ↑

gem sources -a http://gemcutter.org
sudo gem install som

How To Use¶ ↑

require 'rubygems'
require 'som'

data = [[1,2,3], [4,5,6]...]

a = SOM.new(data, :number_of_nodes => 4, :dimensions => 3)
a.train

# To see which class a new piece of data fits into
new_data = [9,8,7]

# An array is returned containing the index of the
# training data that fits into the same class
# The index is the same as the index in the training data e.g:
# data[index_returned_by_SOM (2)] == data[2]
a.classify(new_data)
  #=> [node_index, [training_data_index_1, training_data_index_2...]]

# Returns the id of a node and the
# index of the data that belongs to it
a.inspect
  #=> [[0, [1, 0...]], [1, [99, 84...]], [2, [11, 23...]]]

You can also save your SOM and load a previously save SOM:

require 'rubygems'
require 'som'

data = [[1,2,3], [4,5,6]...]

a = SOM.new(data, :number_of_nodes => 4, 
                  :dimensions => 3,
                  :save_to => 'file_path/to/here.som')

a.train # Saves it

b = SOM.load('file_path/to/here.som') # Loads it

b.classify(new_data) # etc...

Options¶ ↑

SOM.new(data, :number_of_nodes => 1,   #Default: 5
              :learning_rate => 0.7,   #Default: 0.5
              :radius => 1,            #Default: number_of_nodes / 2
              :max_iterations => 100,  #Default: 100
              :verbose => true,        #Default: false
              :save_to => 'file_path') #Default: nil

Copyright © 2009 Red Davis. See LICENSE for details.