aldeebhasan / laravelcf
此包允许您根据自定义输入快速生成推荐
1.0.3
2023-07-10 17:17 UTC
Requires
- php: >=8.1
- ext-json: *
Requires (Dev)
- orchestra/testbench: 8.x-dev
- phpunit/phpunit: ^9.6
This package is auto-updated.
Last update: 2024-09-14 15:47:42 UTC
README
一个PHP包,允许您找到模块的最佳推荐
安装
使用Composer安装
composer require aldeebhasan/laravelcf
运行
php artisan migrate
基本用法
LarvelCF包允许您根据包括(余弦,加权余弦,中心余弦,SlopeOne)在内的多种算法推荐数据。
通常,此包包含两种类型的推荐器
- 基于物品的推荐器
- 基于用户的推荐器
填写数据
构建您的推荐系统的第一步是提供您想要工作的数据集。
在LarvelCF中,我们有4种类型的数据(购买,评分,购物车操作,书签)。这些类型的目的是使您能够同时处理不同类型的数据。
您可以使用以下方式输入您的推荐器数据
use \Aldeebhasan\LaravelCF\Facades\Recommender; Recommender::addRating ('user_1', 'product_1', 5); Recommender::addCartAddition('user_1', 'product_1', 2); // like the quantity Recommender::addPurchase ('user_1', 'product_1', 5); // like the quantity Recommender::addBookmark ('user_1', 'product_1', 5);
实例化推荐器
输入您的数据后,您可以使用我们的支持外观实例化所需的推荐器。
use \Aldeebhasan\LaravelCF\Facades\Recommender; use \Aldeebhasan\LaravelCF\Enums\RelationType; /* you cann also use any of RelationType::PURCHASE,RelationType::CART_ACTION,RelationType::BOOKMARK*/ Recommender::getItemBasedRecommender(RelationType::RATE); // to recommend similar products //OR Recommender::getUserBasedRecommender(RelationType::RATE);// to recommend similar users
获取推荐
最后,要生成您的推荐,您将运行以下代码
use \Aldeebhasan\LaravelCF\Facades\Recommender; use \Aldeebhasan\LaravelCF\Enums\RelationType; /* you cann also use any of RelationType::PURCHASE,RelationType::CART_ACTION,RelationType::BOOKMARK*/ Recommender::getItemBasedRecommender(RelationType::RATE) ->setSimilarityFunction(Cosine::class) ->train() ->recommendTo('user_1');
对于 setSimilarityFunction
,您可以提供相似性算法、缺失值默认值以及是否希望填充缺失值或丢弃它们。
可用的相似性算法
- Cosine::class(基于物品的默认值)
- CosineCentered::class
- CosineWeighted::class
- Jaccard::class
- SlopeOne::class
- Pearson::class(基于用户的默认值)
可用的缺失值替换方法
- MissingValue::ZERO(包默认值)
- MissingValue::MEAN
- MissingValue::MEDIAN
use \Aldeebhasan\LaravelCF\Facades\Recommender; use \Aldeebhasan\LaravelCF\Enums\RelationType; use \Aldeebhasan\LaravelCF\Enums\MissingValue; use \Aldeebhasan\LaravelCF\Similarity; Recommender::getItemBasedRecommender(RelationType::RATE) // use Weighted cosine algorithm and replace the missing values with zero ->setSimilarityFunction(CosineWeighted::class,MissingValue::ZERO,true) // use SlopeOne algorithm and replace the missing values with the mean ->setSimilarityFunction(SlopeOne::class,MissingValue::MEAN,true)
完整示例
use \Aldeebhasan\LaravelCF\Facades\Recommender; use \Aldeebhasan\LaravelCF\Enums\RelationType; use \Aldeebhasan\LaravelCF\Enums\MissingValue; use \Aldeebhasan\LaravelCF\Similarity; Recommender::addRating(1, 'squid', 1); Recommender::addRating(2, 'squid', 1); Recommender::addRating(3, 'squid', 0.2); Recommender::addRating(1, 'cuttlefish', 0.5); Recommender::addRating(3, 'cuttlefish', 0.4); Recommender::addRating(4, 'cuttlefish', 0.9); Recommender::addRating(1, 'octopus', 0.2); Recommender::addRating(2, 'octopus', 0.5); Recommender::addRating(3, 'octopus', 1); Recommender::addRating(4, 'octopus', 0.4); Recommender::addRating(1, 'nautilus', 0.2); Recommender::addRating(3, 'nautilus', 0.4); Recommender::addRating(4, 'nautilus', 0.5); $results = Recommender::getItemBasedRecommender(RelationType::RATE) ->setSimilarityFunction(CosineWeighted::class, MissingValue::MEAN) ->train() ->recommendTo('squid'); /** recommendation results sorted by similarity: [ "cuttlefish" => 0.89 "nautilus" => 0.75 "octopus" => 0.5 ] **/
许可证
Laravel推荐系统包是根据MIT许可证(MIT)许可的。
安全联系信息
要报告安全漏洞,请直接联系开发者联系邮箱这里。