From 627040703d819787467eae70af1e95261de7e7b3 Mon Sep 17 00:00:00 2001 From: Mohammed Elhaouari Date: Thu, 5 Oct 2023 13:26:50 +0100 Subject: [PATCH 1/2] Fix division by zero in slopeone predictor --- composer.json | 6 +++--- src/Algorithms/Slopeone/Predictor.php | 3 ++- tests/RecommenderServiceTest.php | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index b2edf58..5554c1d 100755 --- a/composer.json +++ b/composer.json @@ -24,9 +24,9 @@ "php": "^7.4|^8.0|^8.1" }, "require-dev": { - "squizlabs/php_codesniffer": "^3.4", - "phpstan/phpstan": "^0.12", - "pestphp/pest": "^1.18" + "phpstan/phpstan": "^1.10", + "pestphp/pest": "^1.23", + "friendsofphp/php-cs-fixer": "^3.34" }, "autoload": { "psr-4": { diff --git a/src/Algorithms/Slopeone/Predictor.php b/src/Algorithms/Slopeone/Predictor.php index 720545a..e024491 100755 --- a/src/Algorithms/Slopeone/Predictor.php +++ b/src/Algorithms/Slopeone/Predictor.php @@ -35,7 +35,8 @@ public function getPrediction(array $evaluation, string $target): float $sum += ($value + $vectors[1][$key]) * $card; $freq += $card; } - $predValue = $sum / $freq; + + $predValue = $sum / ($freq !== 0 ? $freq : 1); return round($predValue, $this->vector->getScale()); } diff --git a/tests/RecommenderServiceTest.php b/tests/RecommenderServiceTest.php index a316207..f371e01 100755 --- a/tests/RecommenderServiceTest.php +++ b/tests/RecommenderServiceTest.php @@ -27,7 +27,7 @@ $recommenderService = new RecommenderService($dataset); // instance of cosine - $class = new class () implements IRecommender { + $class = new class() implements IRecommender { public function name(): string { return 'Test Recommender'; From 7af2e643dcb0ca1bd4448911090518bb2ad218e6 Mon Sep 17 00:00:00 2001 From: the-dijkstra Date: Thu, 5 Oct 2023 12:27:20 +0000 Subject: [PATCH 2/2] Fix styling --- tests/RecommenderServiceTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/RecommenderServiceTest.php b/tests/RecommenderServiceTest.php index f371e01..a316207 100755 --- a/tests/RecommenderServiceTest.php +++ b/tests/RecommenderServiceTest.php @@ -27,7 +27,7 @@ $recommenderService = new RecommenderService($dataset); // instance of cosine - $class = new class() implements IRecommender { + $class = new class () implements IRecommender { public function name(): string { return 'Test Recommender';