phpjuice / opencf
基于(加权Slopeone、余弦、加权余弦)评分的协同过滤方案的PHP实现。
v2.2.1
2023-10-05 12:33 UTC
Requires
- php: ^7.4|^8.0|^8.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.34
- pestphp/pest: ^1.23
- phpstan/phpstan: ^1.10
README
基于(加权Slopeone、余弦、加权余弦)评分的协同过滤方案的PHP实现。
要了解更多信息,请访问详细的 文档。
安装
OpenCF 包需要 PHP 7.4 或更高版本。
INFO: 如果你使用的是较旧版本的PHP,此包将无法正常工作。
安装 OpenCF 包的推荐方式是通过 Composer。
composer require phpjuice/opencf
使用方法
OpenCF 包设计得非常简单直观。你所要做的就是
- 加载训练集(数据集)
- 使用推荐器预测未来的评分。(加权Slopeone、余弦、加权余弦)
创建推荐器服务
通过直接实例化创建 OpenCF 推荐器服务
use OpenCF\RecommenderService; // Create an instance $recommenderService = new RecommenderService($dataset);
添加数据集
可以通过构造函数添加数据集,也可以通过提供用户评分的数组并通过 setDataset() 方法轻松完成
$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);
获取预测结果
要预测新用户的评分,只需从推荐器服务中检索一个引擎并运行 predict() 方法。
// 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 ]);
使用 WeightedSlopeone 推荐器应该会产生以下结果
[ "cuttlefish" => 0.25, "octopus" => 0.23, "nautilus" => 0.1 ];
运行测试
你可以通过 composer 轻松运行测试
composer test
构建工具
变更日志
请参阅 变更日志 了解最近更改的信息。
贡献
请参阅 CONTRIBUTING.md 了解详细信息及待办事项列表。
安全
如果你发现任何与安全相关的问题,请通过电子邮件联系作者,而不是使用问题跟踪器。
致谢
版本控制
我们使用 SemVer 进行版本控制。有关可用版本,请参阅此存储库的 标签。
许可证
许可证。有关更多信息,请参阅 许可证。