class IBM::ML::Local

Class for calling Local Machine Learning scoring service

Public Class Methods

new(host, username, password) click to toggle source
Calls superclass method IBM::ML::new
# File lib/ibm/ml/local.rb, line 7
def initialize(host, username, password)
  super
  @http.use_ssl     = true
  @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end

Public Instance Methods

query_score(score, field) click to toggle source
# File lib/ibm/ml/local.rb, line 35
def query_score(score, field)
  query_ml_score(score, field, 'records')
end
score(deployment_id, record) click to toggle source
# File lib/ibm/ml/local.rb, line 13
def score(deployment_id, record)
  url = URI("https://#{@host}/v2/scoring/online/#{deployment_id}")

  # noinspection RubyStringKeysInHashInspection
  header = {
    'authorization' => "Bearer #{fetch_token}",
    'content-type'  => 'application/json'
  }

  request      = Net::HTTP::Post.new(url, header)
  request.body = { fields: record.keys, records: [record.values] }.to_json

  response = @http.request(request)

  begin
    body = JSON.parse(response.read_body)
    body.key?('records') ? body : raise(ScoringError, response.read_body)
  rescue JSON::ParserError
    raise(ScoringError, response.read_body)
  end
end

Private Instance Methods

ldap_request(uri) click to toggle source
# File lib/ibm/ml/local.rb, line 45
def ldap_request(uri)
  request             = Net::HTTP::Get.new uri
  request['Username'] = @username
  request['Password'] = @password
  request
end
ldap_url() click to toggle source
# File lib/ibm/ml/local.rb, line 41
def ldap_url
  "https://#{@host}/v2/identity/token"
end
process_ldap_response(response) click to toggle source
# File lib/ibm/ml/local.rb, line 52
def process_ldap_response(response)
  JSON.parse(response.read_body)['accessToken']
end