Sha256: 6a23e1c1c74f85d80bdc02eb7d285e2232fbf38f0f3fb7d3b5a5300852c56683
Contents?: true
Size: 1.24 KB
Versions: 29
Compression:
Stored size: 1.24 KB
Contents
# frozen_string_literal: true require 'rumale/base/evaluator' module Rumale module EvaluationMeasure # Purity is a class that calculates the purity of cluatering results. # # @example # evaluator = Rumale::EvaluationMeasure::Purity.new # puts evaluator.score(ground_truth, predicted) # # *Reference* # - C D. Manning, P. Raghavan, and H. Schutze, "Introduction to Information Retrieval," Cambridge University Press., 2008. class Purity include Base::Evaluator # Calculate purity # # @param y_true [Numo::Int32] (shape: [n_samples]) Ground truth labels. # @param y_pred [Numo::Int32] (shape: [n_samples]) Predicted cluster labels. # @return [Float] Purity def score(y_true, y_pred) check_label_array(y_true) check_label_array(y_pred) # initiazlie some variables. purity = 0 n_samples = y_pred.size class_ids = y_true.to_a.uniq cluster_ids = y_pred.to_a.uniq # calculate purity. cluster_ids.each do |k| pr_sample_ids = y_pred.eq(k).where.to_a purity += class_ids.map { |j| (pr_sample_ids & y_true.eq(j).where.to_a).size }.max end purity.fdiv(n_samples) end end end end
Version data entries
29 entries across 29 versions & 1 rubygems