首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PredictionIO -一个引擎和多个算法

PredictionIO -一个引擎和多个算法
EN

Stack Overflow用户
提问于 2015-09-16 17:25:32
回答 1查看 562关注 0票数 2

我被一个引擎和多个算法卡住了,需要进一步的帮助。

我有一个引擎和两个算法,让我们调用AL1和AL2。在有两个算法scala文件的src/main/scala中,名为AL1Algorithm.scala和AL2Algorithm.scala的每个算法都有自己的参数和模型( AL1的AL1AlgorithmParams和AL1Model,AL2的AL2AlgorithmParams和AL2Model )。因此,有2个训练函数和2个预测函数。

我可以通过调用pio train来训练2个算法。当我调用send_query进行测试时,程序总是返回我放在engine.json文件顶部的算法的结果

例如,如果我将AL1Algorithm放在最上面,send_query将运行AL1Algorithm

代码语言:javascript
复制
"algorithms": [
    {
      "name": "AL1Algorithm",
      "params": {
        "n": 100
      }
    },
    {
      "name": "AL2Algorithm",
      "params": {
        "n": 100
      }
    }

如果我把AL2Algorithm放在最上面,send_query将运行AL2Algorithm‘

代码语言:javascript
复制
"algorithms": [
    {
      "name": "AL2Algorithm",
      "params": {
        "n": 100
      }
    },
    {
      "name": "AL1Algorithm",
      "params": {
        "n": 100
      }
    }

我的问题是,我可以为一个send_query调用两个算法吗,如何区分哪个算法应该在send_query中调用,而不是在engine.json中调用。这里有一些奇怪的东西,我想我的配置有问题。Serving.scala会同时产生两种算法的结果吗?我可以在服务中拆分每个算法的结果吗?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2015-09-17 15:16:36

您还需要修改Serving.scala中的serve()函数。serve()函数有两个参数。见下文

代码语言:javascript
复制
def serve(query: Query,
   predictedResults: Seq[PredictedResult]): PredictedResult

查询被发送到这两个算法,并且这两个算法返回的PredictedResult作为Seq[PredictedResult]传递给serve()函数。Seq[]顺序与engine.json中定义的算法顺序相同。您需要对其进行修改,以使用算法的所有PredictedResult输出。一些模板示例默认情况下只接受第一个结果(predictedResults.head)

另请参见this doc中的“步骤4.修改服务以组合多个算法的输出”作为示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32604603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档