class Callidus::KNN
Attributes
input[RW]
output[RW]
Public Class Methods
new(ip = [], op = [])
click to toggle source
# File lib/src/KNN.rb, line 8 def initialize(ip = [], op = []) @input = ip @output = op end
Public Instance Methods
predict(x, k = 1)
click to toggle source
# File lib/src/KNN.rb, line 13 def predict(x, k = 1) diffs = @input.map { |i| Math.sqrt(x.each_with_index.map { |val, ind| (i[ind] - val) ** 2 }.sum) } tdiffs = diffs.dup mins = [] k.times do |i| ind = tdiffs.index(tdiffs.min) mins << tdiffs[ind] tdiffs.pop(ind) end @output[diffs.index(Comp::Arrays.MostFrequent(mins))]; end