从RapidMiner中使用ModelOps web服务评分新数据
这是一篇KB文章,目的是帮助说明一个有趣的情况——当您在远程RapidMiner服务器上部署了一个RapidMiner模型(通过ModelOps),并希望使用RapidMiner通过web服务对新数据进行评分。
最重要的是,我已经激活了ModelOps中的“集成”功能来生成一个计分URL:
如果我从ModelOps屏幕上测试这个web服务,您可以在右上方看到请求,在右下方看到响应:
这是相当直接的。只需输入您在ModelOps屏幕(见上面)的Test URL窗口中看到的URL,以及您想要的数据。例如,我们可以为以下内容打分:
回复是这样的:
我个人喜欢使用JSON阅读器比如这个观察人们的反应。如果你这样做,你会看到一个正确的响应从模型评分引擎:
根据模型的预测,这位乘客有78.8%的生还机会。
如果你想把这个响应转换成一个ExampleSet,最简单的方法是通过JSON to Data操作符(文本处理扩展):
在查询参数菜单内部:
你会得到类似上面的回复:
[注意:这实际上不是一个正常意义上的POST请求-因为我们通常会发送一个JSON数组作为数据对象。]但是ModelOps web服务查询目前不接受JSON数组…]
对多行数据进行评分
示例部署
我从标准的Titanic训练数据集构建了一个决策树模型,并将其部署到远程RapidMiner服务器上。我不打算在这里解释如何做到这一点-请参阅RapidMiner学院它很好地解释了如何做到这一点:

最重要的是,我已经激活了ModelOps中的“集成”功能来生成一个计分URL:

如果我从ModelOps屏幕上测试这个web服务,您可以在右上方看到请求,在右下方看到响应:

对一行数据进行评分
现在让我们使用RapidMiner中的各种方法为一个新的数据行评分:方法1:使用GET Page操作符(Web Mining扩展)使用GET请求
Web Mining扩展可以通过RapidMiner市场免费获得。这不是我们拥有的最现代化的工具,但它可以达到我们的目的。这是相当直接的。只需输入您在ModelOps屏幕(见上面)的Test URL窗口中看到的URL,以及您想要的数据。例如,我们可以为以下内容打分:
passenger_class:第一
no_of_siblings_or_spouses_on_board: 2
性别:女
no_of_parents_or_children_on_board: 1
passenger_fare: 123
年龄:32
URL是:no_of_siblings_or_spouses_on_board: 2
性别:女
no_of_parents_or_children_on_board: 1
passenger_fare: 123
年龄:32
http://partnersrv.www.turtlecreekpls.com:8080/api/rest/process/titanic_deployment_score?passenger_class=First&no_of_siblings_or_spouses_on_board=2&sex=Female&no_of_parents_or_children_on_board=1&passenger_fare=123&age=32过程如下所示:

回复是这样的:

我个人喜欢使用JSON阅读器比如这个观察人们的反应。如果你这样做,你会看到一个正确的响应从模型评分引擎:

根据模型的预测,这位乘客有78.8%的生还机会。
如果你想把这个响应转换成一个ExampleSet,最简单的方法是通过JSON to Data操作符(文本处理扩展):


方法2:使用Get Page操作符(Web Mining扩展)使用POST请求
使用Get Page操作符使用POST请求非常类似于Get请求,但有一个关键的区别:您不会在URL中提交查询。相反,你应该在“查询参数”部分输入查询:
在查询参数菜单内部:

你会得到类似上面的回复:

[注意:这实际上不是一个正常意义上的POST请求-因为我们通常会发送一个JSON数组作为数据对象。]但是ModelOps web服务查询目前不接受JSON数组…]
对多行数据进行评分
由于ModelOps目前不接受允许我们在一个查询中对多行数据进行评分的JSON数组,因此我们不能通过web服务查询一次发送多行数据。然而,这很容易通过循环操作符来实现。
在这里,我使用Titanic unlabelled数据集,只过滤前三行(只是为了演示),然后使用循环示例操作符遍历它们。迭代宏被命名为%{example},它从1开始逐行递增。之后,我将把所有的结果一起添加回一个ExampleSet:
在循环示例中,我使用Extract宏操作符来获取循环中第n个示例的参数:
附加的宏如下所示:
Get Page操作符与上面的操作符完全相同,但查询参数略有调整:
注意,查询值现在是Extract宏设置的宏值。
结果如下:
我希望这讲得通。祝你好运,让这些模型投入部署!!
斯科特
在这里,我使用Titanic unlabelled数据集,只过滤前三行(只是为了演示),然后使用循环示例操作符遍历它们。迭代宏被命名为%{example},它从1开始逐行递增。之后,我将把所有的结果一起添加回一个ExampleSet:

在循环示例中,我使用Extract宏操作符来获取循环中第n个示例的参数:

附加的宏如下所示:

Get Page操作符与上面的操作符完全相同,但查询参数略有调整:


注意,查询值现在是Extract宏设置的宏值。
结果如下:

我希望这讲得通。祝你好运,让这些模型投入部署!!
斯科特
3.