INNER CODE UNIT · Ruby
make_circles
yoshoku/rumale · rumale-core/lib/rumale/dataset.rb:65
def make_circles(n_samples, shuffle: true, noise: nil, factor: 0.8, 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 circles.
linsp_out = Numo::DFloat.linspace(0, 2 * Math::PI, n_samples_out)
linsp_in = Numo::DFloat.linspace(0, 2 * Math::PI, n_samples_in)
circle_out = Numo::DFloat[Numo::NMath.cos(linsp_out), Numo::NMath.sin(linsp_out)].transpose
circle_in = Numo::DFloat[Numo::NMath.cos(linsp_in), Numo::NMath.sin(linsp_in)].transpose
x = Numo::DFloat.vstack([circle_out, factor * 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