kami_sama/cakephp-predictionio

安装量: 2,594

依赖项: 0

建议者: 0

安全: 0

星标: 10

关注者: 5

分支: 0

类型:cakephp-plugin

dev-master 2013-11-12 17:59 UTC

This package is not auto-updated.

Last update: 2024-09-24 00:50:07 UTC


README

Build Status Coverage Status Latest Stable Version

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 检索的默认记录数

enginecount 可以稍后覆盖。

现在,您必须保存用户到项目的行为,然后再计算任何推荐。

示例:用户: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));