Sha256: 3a0aa34d7c16db74ae8c66d87e02e0c9d5dcee0cfbc8292b843bf205b42c76fe

Contents?: true

Size: 1.53 KB

Versions: 92

Compression:

Stored size: 1.53 KB

Contents

module EasyML
  module Models
    class BaseModel
      include ActiveModel::Validations
      include EasyML::Concerns::Configurable
      include EasyML::Support::FileSupport

      attr_reader :model

      add_configuration_attributes :hyperparameters

      def initialize(model)
        @model = model
      end

      delegate :task, :dataset, :hyperparameters, to: :model

      # Required interface methods that subclasses must implement
      def predict(_xs)
        raise NotImplementedError, "#{self.class} must implement #predict"
      end

      def fit(_x_train = nil)
        raise NotImplementedError, "#{self.class} must implement #fit"
      end

      def model_changed?
        raise NotImplementedError, "#{self.class} must implement #model_changed?"
      end

      def feature_importances
        raise NotImplementedError, "#{self.class} must implement #feature_importances"
      end

      def save_model_file(path)
        raise NotImplementedError, "#{self.class} must implement #save_model_file"
      end

      def load_model_file(path)
        raise NotImplementedError, "#{self.class} must implement #load_model_file"
      end

      def loaded?
        raise NotImplementedError, "#{self.class} must implement #loaded?"
      end

      protected

      def validate_objective
        raise NotImplementedError, "#{self.class} must implement #validate_objective"
      end

      def validate_hyperparameters
        raise NotImplementedError, "#{self.class} must implement #validate_hyperparameters"
      end
    end
  end
end

Version data entries

92 entries across 92 versions & 1 rubygems

Version Path
easy_ml-0.2.0.pre.rc105 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc104 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc103 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc102 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc101 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc100 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc99 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc98 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc97 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc96 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc95 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc94 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc93 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc92 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc91 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc90 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc89 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc88 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc85 app/models/easy_ml/models/base_model.rb
easy_ml-0.2.0.pre.rc84 app/models/easy_ml/models/base_model.rb