Class: Semantic::Transform::LSA

Inherits:
Object
  • Object
show all
Defined in:
lib/semantic/transform/lsa_transform.rb

Class Method Summary collapse

Class Method Details

.transform(matrix, number_of_dimensions_to_reduce = 1) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/semantic/transform/lsa_transform.rb', line 7

def transform(matrix, number_of_dimensions_to_reduce = 1)
  columns = matrix.num_columns

  if number_of_dimensions_to_reduce <= columns #Its a valid reduction
    u, sigma, vt = matrix.singular_value_decomposition

    sigma_prime = reduce_dimensions(number_of_dimensions_to_reduce, sigma)

    matrix_prime = u * sigma_prime * vt
  else
    raise Exception, "dimension reduction cannot be greater than %s" % columns
  end
  
  matrix_prime
end