module DNN::Iris
Constants
- SETOSA
Iris-setosa
- URL_CSV
- VERSICOLOR
Iris-versicolor
- VIRGINICA
Iris-virginica
Public Class Methods
downloads()
click to toggle source
# File lib/dnn/datasets/iris.rb, line 17 def self.downloads return if File.exist?(url_to_file_name(URL_CSV)) Downloader.download(URL_CSV) end
load(shuffle = false, shuffle_seed = rand(1 << 31))
click to toggle source
# File lib/dnn/datasets/iris.rb, line 22 def self.load(shuffle = false, shuffle_seed = rand(1 << 31)) downloads csv_array = CSV.read(url_to_file_name(URL_CSV)).reject(&:empty?) x = Numo::SFloat.zeros(csv_array.length, 4) y = Numo::SFloat.zeros(csv_array.length) csv_array.each.with_index do |(sepal_length, sepal_width, petal_length, petal_width, classes), i| x[i, 0] = sepal_length.to_f x[i, 1] = sepal_width.to_f x[i, 2] = petal_length.to_f x[i, 3] = petal_width.to_f y[i] = case classes when "Iris-setosa" SETOSA when "Iris-versicolor" VERSICOLOR when "Iris-virginica" VIRGINICA else raise DNN_Iris_LoadError, "Unknown class name '#{classes}' for iris" end end if shuffle orig_seed = Random::DEFAULT.seed srand(shuffle_seed) indexs = (0...csv_array.length).to_a.shuffle x[indexs, true] = x y[indexs] = y srand(orig_seed) end [x, y] end
Private Class Methods
url_to_file_name(url)
click to toggle source
# File lib/dnn/datasets/iris.rb, line 54 def self.url_to_file_name(url) DOWNLOADS_PATH + "/downloads/" + url.match(%r`.+/(.+)$`)[1] end