1<?php
2
3declare(strict_types=1);
4
5namespace Phpml\Metric;
6
7use Phpml\Exception\InvalidArgumentException;
8
9class Accuracy
10{
11    /**
12     * @return float|int
13     *
14     * @throws InvalidArgumentException
15     */
16    public static function score(array $actualLabels, array $predictedLabels, bool $normalize = true)
17    {
18        if (count($actualLabels) != count($predictedLabels)) {
19            throw new InvalidArgumentException('Size of given arrays does not match');
20        }
21
22        $score = 0;
23        foreach ($actualLabels as $index => $label) {
24            if ($label == $predictedLabels[$index]) {
25                ++$score;
26            }
27        }
28
29        if ($normalize) {
30            $score /= count($actualLabels);
31        }
32
33        return $score;
34    }
35}
36