Module: Ai4r::Experiment::Split

Defined in:
lib/ai4r/experiment/split.rb

Overview

Utility methods for experiment workflows.

Class Method Summary collapse

Class Method Details

.split(data_set, k:) ⇒ Array<Ai4r::Data::DataSet>

Split a dataset into k folds.

Parameters:

Returns:

Raises:

  • (ArgumentError)


24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/ai4r/experiment/split.rb', line 24

def split(data_set, k:)
  raise ArgumentError, 'k must be greater than 0' unless k.positive?

  items = data_set.data_items.dup
  labels = data_set.data_labels
  fold_size = (items.length.to_f / k).ceil
  folds = []
  k.times do |i|
    part = items.slice(i * fold_size, fold_size) || []
    folds << Ai4r::Data::DataSet.new(data_items: part, data_labels: labels)
  end
  folds
end