Class: DataMining::DBScan

Inherits:
Object
  • Object
show all
Defined in:
lib/data_mining/dbscan.rb

Overview

Density-Based clustering / Outlier-Detection Algorithm

Instance Method Summary collapse

Constructor Details

#initialize(data, radius, min_points) ⇒ DBScan

Find clusters and outliers

Arguments:

data: (array of arrays, like [[:id, value], [:id2, value2]])
radius: (integer)
min_points: (integer)


10
11
12
13
14
15
16
17
# File 'lib/data_mining/dbscan.rb', line 10

def initialize(data, radius, min_points)
  @data               = data.map { |i, v| DataMining::Point.new(i, v) }
  @radius             = radius
  @min_points         = min_points
  @current_cluster_id = 0
  @clusters           = {}
  @unvisited_points   = @data.shuffle
end

Instance Method Details

#cluster!Object



19
20
21
# File 'lib/data_mining/dbscan.rb', line 19

def cluster!
  dbscan
end

#clustersObject



27
28
29
# File 'lib/data_mining/dbscan.rb', line 27

def clusters
  @clusters.map { |cluster, points| { cluster => points.each(&:id) } }
end

#outliersObject



23
24
25
# File 'lib/data_mining/dbscan.rb', line 23

def outliers
  @data.select { |p| !p.assigned_to_cluster? }
end