PHP implementation of the (Weighted Slopeone,Cosine, Weighted Cosine) rating-based collaborative filtering schemes.
To learn all about it, head over to the extensive documentation.
OpenCF Package requires PHP 7.4
or higher.
INFO: If you are using an older version of php this package will not function correctly.
The supported way of installing OpenCF
package is via Composer.
composer require phpjuice/opencf
OpenCF Package is designed to be very simple and straightforward to use. All you have to do is:
The OpenCF
recommender service is created by direct instantiation:
use OpenCF\RecommenderService;
// Create an instance
$recommenderService = new RecommenderService($dataset);
Adding a dataset to the recommender can be done using the constructor or can be easily done by providing an array of
users ratings via the setDataset()
method:
$dataset = [
"squid" => [
"user1" => 1,
"user2" => 1,
"user3" => 0.2,
],
"cuttlefish" => [
"user1" => 0.5,
"user3" => 0.4,
"user4" => 0.9,
],
"octopus" => [
"user1" => 0.2,
"user2" => 0.5,
"user3" => 1,
"user4" => 0.4,
],
"nautilus" => [
"user2" => 0.2,
"user3" => 0.4,
"user4" => 0.5,
],
];
$recommenderService->setDataset($dataset);
All you have to do to predict ratings for a new user is to retrieve an engine from the recommender service and & run
the predict()
method.
// Get a recommender
$recommender = $recommenderService->cosine(); // Cosine recommender
// OR
$recommender = $recommenderService->weightedCosine(); // WeightedCosine recommender
// OR
$recommender = $recommenderService->weightedSlopeone(); // WeightedSlopeone recommender
// Predict future ratings
$results = $recommender->predict([
"squid" => 0.4
]);
This should produce the following results when using WeightedSlopeone
recommender
[
"cuttlefish" => 0.25,
"octopus" => 0.23,
"nautilus" => 0.1
];
you can easily run tests using composer
composer test
Please see the changelog for more information on what has changed recently.
Please see CONTRIBUTING.md for details and a todo list.
If you discover any security related issues, please email author instead of using the issue tracker.
We use SemVer for versioning. For the versions available, see the tags on this repository.
license. Please see the Licence for more information.