INNER CODE UNIT · Ruby
make_moons
yoshoku/rumale · rumale-core/lib/rumale/dataset.rb:97
def make_moons(n_samples, shuffle: true, noise: nil, random_seed: nil)
# initialize some variables.
rs = random_seed
rs ||= srand
rng = Random.new(rs)
n_samples_out = n_samples.fdiv(2).to_i
n_samples_in = n_samples - n_samples_out
# make two half circles.
linsp_out = Numo::DFloat.linspace(0, Math::PI, n_samples_out)
linsp_in = Numo::DFloat.linspace(0, Math::PI, n_samples_in)
circle_out = Numo::DFloat[Numo::NMath.cos(linsp_out), Numo::NMath.sin(linsp_out)].transpose
circle_in = Numo::DFloat[1 - Numo::NMath.cos(linsp_in), 1 - Numo::NMath.sin(linsp_in) - 0.5].transpose
x = Numo::DFloat.vstack([circle_out, circle_in])
y = Numo::Int32.hstack([Numo::Int32.zeros(n_samples_out), Numo::Int32.ones(n_samples_in)])
# shuffle data indices.
if shuffle
rand_ids = Array(0...n_samples).shuffle(random: rng.dup)
x = x[rand_ids, true].dup