class Mirlo::DoubleMoonDataSet
Constants
- DEFAULT_DISTANCE
- DEFAULT_RADIUS
- DEFAULT_WIDTH
- LOWER_MOON
- UPPER_MOON
Attributes
distance[R]
radius[R]
width[R]
Public Class Methods
new(n_points: 500, radius: DEFAULT_RADIUS, width: DEFAULT_WIDTH, distance: DEFAULT_DISTANCE)
click to toggle source
Calls superclass method
Mirlo::Dataset::new
# File lib/mirlo/datasets/double_moon_dataset.rb, line 12 def initialize(n_points: 500, radius: DEFAULT_RADIUS, width: DEFAULT_WIDTH, distance: DEFAULT_DISTANCE) feature_names = ['x', 'y'] title = "Double Moon Dataset with radius:=#{radius}, width:=#{width}, distance:=#{distance}" @radius, @width, @distance = radius, width, distance samples = n_points.times.collect { random_point } labels = { UPPER_MOON => 'Upper moon', LOWER_MOON => 'Lower moon' } super(samples: samples, feature_names: feature_names, title: title, labels: labels) end
Public Instance Methods
random_point()
click to toggle source
# File lib/mirlo/datasets/double_moon_dataset.rb, line 26 def random_point angle_coord = rand * Math::PI radial_coord = radius + width * rand(-0.5..0.5) target = rand(2) == 1 ? UPPER_MOON : LOWER_MOON if target == UPPER_MOON x = radial_coord * Math.cos(angle_coord) y = radial_coord * Math.sin(angle_coord) else x = radial_coord * Math.cos(angle_coord) + radius y = - radial_coord * Math.sin(angle_coord) - distance end SampleWithBias.new(target: target, features: [x, y]) end