Class: Rumale::EvaluationMeasure::Purity

Inherits:
Object
  • Object
show all
Includes:
Base::Evaluator
Defined in:
lib/rumale/evaluation_measure/purity.rb

Overview

Purity is a class that calculates the purity of cluatering results.

Reference

  • C D. Manning, P. Raghavan, and H. Schutze, “Introduction to Information Retrieval,” Cambridge University Press., 2008.

Examples:

evaluator = Rumale::EvaluationMeasure::Purity.new
puts evaluator.score(ground_truth, predicted)

Instance Method Summary collapse

Instance Method Details

#score(y_true, y_pred) ⇒ Float

Calculate purity

Parameters:

  • y_true (Numo::Int32)

    (shape: [n_samples]) Ground truth labels.

  • y_pred (Numo::Int32)

    (shape: [n_samples]) Predicted cluster labels.

Returns:

  • (Float)

    Purity



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/rumale/evaluation_measure/purity.rb', line 23

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