INNER CODE UNIT · Ruby
parse_libsvm_line
yoshoku/rumale · rumale-core/lib/rumale/dataset.rb:176
def parse_libsvm_line(line, zero_based)
label = parse_label(line.shift)
adj_idx = zero_based == false ? 1 : 0
max_idx = -1
ftvec = []
while (el = line.shift)
idx, val = el.split(':')
idx = idx.to_i - adj_idx
val = val.to_i.to_s == val ? val.to_i : val.to_f
max_idx = idx if max_idx < idx
ftvec.push([idx, val])
end
[label, ftvec, max_idx]
end
def parse_label(label)
lbl_arr = label.split(',').map { |lbl| lbl.to_i.to_s == lbl ? lbl.to_i : lbl.to_f }
lbl_arr.size > 1 ? lbl_arr : lbl_arr[0]