kami_sama / cakephp-predictionio
Requires
- php: >=5.3.0
- composer/installers: *
- predictionio/predictionio: *
This package is not auto-updated.
Last update: 2024-09-24 00:50:07 UTC
README
CakePHP 预测IO 机器学习服务插件
安装
安装插件
cd your-application/app/Plugin
# Classic install
git clone git://github.com/kamisama/cakephp-predictionio.git PredictionIO
# OR install as a submodule
git submodule add git://github.com/kamisama/cakephp-predictionioe.git PredictionIO
安装依赖项
cd PredictioIO
composer install
加载插件
在您的 app/Config/bootstrap.php
文件中,加载插件
CakePlugin::load(array('PredictionIO' => array('bootstrap' => true)));
使用方法
设置
将您的 predictionIO API 密钥放入 app/Plugin/PredictionIO.Config/bootstrap.php
您还可以定义要使用的模型作为用户模型,以及用于推荐的默认引擎的名称。
使用可预测的行为
该行为将在每次保存/更新/删除操作时与 predictionIO 服务器同步您的模型。默认情况下,只有模型主键和模型名称被发送到 predictionIO。
将可预测的行为附加到您的模型
$actsAs = array( 'PredictionIO.Predictionable' => array( //'fields' => array(), //'types' => array(), //'engine' => '', //'count' => 10 ) );
可选设置
fields
:要随 predictionIO 记录一起保存的额外字段数组types
:分配给该模型在 PredictionIo 服务器上的类别名称数组(默认为当前模型名称)engine
:用于从其中检索推荐的默认引擎名称count
:从 predictionIO 检索的默认记录数
engine
和 count
可以稍后覆盖。
现在,您必须保存用户到项目的行为,然后再计算任何推荐。
示例:用户:1 文章:52,用户:4 页面:26,用户:85 电影:8 等 ...
这些操作通过用户模型保存
$User->recordAction($actionName, $targetItem, $optionalParameters);
$actionName
:动作名称,例如:保存、喜欢、评分、查看等 ...$targetItem
:动作的目标项目$optionalParameters
:要随动作一起保存的额外字段数组,例如:array('note', 52)
示例
$User->id = 2; $Post->id = 25; $User->recordAction('rate', $Post, array('note' => 10));
您还可以使用数组引用目标项目
$User->id = 2; $User->recordAction('rate', array('model' => 'Post', 'id' => 25), array('note' => 10));
为用户获取项目推荐
检索向特定用户推荐的项目
findRecommended()
可用于用户模型,或任何其他模型,只要它与用户模型相关联。
$User->id = 5; $User->findRecommended('all', array()); // Or $Article->User->id = 5; $Article->findRecommended('all', array());
findRecommended()
接受与经典 find()
方法相同的参数,并且始终由 推荐项目 调用。
示例
// Getting movies and activities recommendations $User->id = 5; $User->findRecommended('all', $options); // Is equivalent to $Movie->find('all', $options); $Activity->find('all', $options); // And will returns the results form these 2 find() actions // Of course, the right ID will be injected into the $options, // to fetch only the recommended items from yoru datasource
返回的模型类型取决于您引擎处理的模型类型。
$options
可以接受一个额外的 prediction
键
'prediction' => array( 'id' => $userId, 'engine' => 'engine1' )
获取类似项目的推荐
检索与另一个项目类似的项目
使用 findSimilar()
方法。它接受与经典 find
方法相同的参数,但仅返回类似项目的结果。
它在查询选项中接受一个额外的 prediction
参数
$Post->id = 2; $Post->findSimilar('all', array( 'conditions' => array(), 'fields' => array(), 'limit' => 15, 'prediction' => array( 'engine' => 'engine1', 'count' => 8 ) ));
在 prediction
键中,如果
- 未指定引擎,则默认为在加载行为时设置的引擎,然后是配置中设置的引擎
- 未指定数量,则默认为
limit
键,然后是加载行为时设置的数量。
findSimilar()
实际上只是查找类似项目的 ID,然后将它们放入 conditions
键。如果您有 conditions.Post.id
,则会被覆盖。
所有其他设置将用于从原始数据源检索数据。
要指定获取类似结果的项目 ID,您可以设置当前模型的主键
$Post-id = 2;
或者您也可以在查询中指定它
$Post->findSimilar('all', array('id' => 2));