Sha256: 0f279b82c040002ac39167e403b499d1cb4d3fd87fa3fa5b7e9133ae0a359aef
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
require "csv" require_relative "downloader" module DNN class DNN_Iris_LoadError < DNNError; end module Iris URL_CSV = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data" # Iris-setosa SETOSA = 0 # Iris-versicolor VERSICOLOR = 1 # Iris-virginica VIRGINICA = 2 def self.downloads return if File.exist?(url_to_file_name(URL_CSV)) Downloader.download(URL_CSV) end 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 if RUBY_VERSION.split(".")[0].to_i >= 3 orig_seed = Random.seed else orig_seed = Random::DEFAULT.seed end 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_method def self.url_to_file_name(url) DOWNLOADS_PATH + "/downloads/" + url.match(%r`.+/(.+)$`)[1] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruby-dnn-1.3.0 | lib/dnn/datasets/iris.rb |