Sha256: bd647e5564a62362d6e79d3df2117d0fa1c829027677844b9f7f444a9351a40a

Contents?: true

Size: 1.5 KB

Versions: 29

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true

require 'rumale/base/evaluator'
require 'rumale/evaluation_measure/precision_recall'

module Rumale
  module EvaluationMeasure
    # R2Score is a class that calculates the coefficient of determination for the predicted values.
    #
    # @example
    #   evaluator = Rumale::EvaluationMeasure::R2Score.new
    #   puts evaluator.score(ground_truth, predicted)
    class R2Score
      include Base::Evaluator

      # Create a new evaluation measure calculater for coefficient of determination.
      def initialize; end

      # Calculate the coefficient of determination.
      #
      # @param y_true [Numo::DFloat] (shape: [n_samples, n_outputs]) Ground truth target values.
      # @param y_pred [Numo::DFloat] (shape: [n_samples, n_outputs]) Estimated taget values.
      # @return [Float] Coefficient of determination
      def score(y_true, y_pred)
        check_tvalue_array(y_true)
        check_tvalue_array(y_pred)
        raise ArgumentError, 'Expect to have the same size both y_true and y_pred.' unless y_true.shape == y_pred.shape

        n_samples, n_outputs = y_true.shape
        numerator = ((y_true - y_pred)**2).sum(0)
        yt_mean = y_true.sum(0) / n_samples
        denominator = ((y_true - yt_mean)**2).sum(0)
        if n_outputs.nil?
          denominator.zero? ? 0.0 : 1.0 - numerator / denominator
        else
          scores = 1 - numerator / denominator
          scores[denominator.eq(0)] = 0.0
          scores.sum / scores.size
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
rumale-0.13.8 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.13.7 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.13.6 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.13.5 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.13.4 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.13.3 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.13.2 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.13.1 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.13.0 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.12.9 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.12.8 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.12.7 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.12.6 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.12.5 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.12.4 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.12.3 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.12.2 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.12.1 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.12.0 lib/rumale/evaluation_measure/r2_score.rb
rumale-0.11.0 lib/rumale/evaluation_measure/r2_score.rb