You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
926 B
Ruby

$:.unshift File.dirname($0)
require 'subclu'
EPS = 0.02
MIN_PTS = 2
db = [
[0.0,0.1,0.2,0.3],
[0.0,0.1,0.2,0.41],
[0.0,0.1,0.2,0.42],
[0.0,0.1,0.2,0.43],
[0.0,0.1,0.2,0.44],
[0.5,0.1,0.2,0.45],
[0.5,0.1,0.2,0.46],
[0.5,0.1,0.2,0.47],
[0.5,0.1,0.2,0.48],
[0.5,0.1,0.2,0.49],
[0.5,0.1,0.2,0.50],
[0.5,0.1,0.2,0.51],
[0.5,0.1,0.2,0.52]
]
#dbscan runs on all attributes
all_attribute_indices = db[0].index
dbscan = DBscan.new(EuclideanDistance.new(all_attribute_indices))
result = dbscan.run(db, EPS, MIN_PTS)
#test run of subclu, which outputs all possibilities for projected clustering
subclu = SUBCLU.new(JensenShannonDistance)
result = subclu.run(db, EPS, MIN_PTS)
result.each_index do |dim|
puts "DIMENSIONALITY: #{dim+1}"
result[dim].each_pair do |subspace, clusters|
puts " #{subspace.inspect}"
clusters.each do |cluster|
puts " #{cluster}"
end
puts "\n\n"
end
end