Class: DataMining::DBScan
- Inherits:
-
Object
- Object
- DataMining::DBScan
- Defined in:
- lib/data_mining/dbscan.rb
Overview
Density-Based clustering / Outlier-Detection Algorithm
Instance Method Summary collapse
- #cluster! ⇒ Object
- #clusters ⇒ Object
-
#initialize(data, radius, min_points) ⇒ DBScan
constructor
Find clusters and outliers.
- #outliers ⇒ Object
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 |
#clusters ⇒ Object
27 28 29 |
# File 'lib/data_mining/dbscan.rb', line 27 def clusters @clusters.map { |cluster, points| { cluster => points.each(&:id) } } end |
#outliers ⇒ Object
23 24 25 |
# File 'lib/data_mining/dbscan.rb', line 23 def outliers @data.select { |p| !p.assigned_to_cluster? } end |