asafschers/scoruby

View on GitHub
lib/scoruby/models/logistic_regression/model.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

require 'scoruby/models/logistic_regression/data'
require 'forwardable'

module Scoruby
  module Models
    module LogisticRegression
      class Model
        extend Forwardable
        def_delegators :@data, :coefficients, :coefficient_values

        def initialize(xml)
          @data = Data.new(xml)
        end

        def intercept
          coefficient_values.first
        end

        def score(features)
          logodds = intercept
          features.each do |key, value|
            logodds += coefficients[key.to_s] * value
          end

          1.0 / (1.0 + Math.exp(-logodds))
        end
      end
    end
  end
end