类别

版本

您正在查看9.0 -版本的RapidMiner服务器文档点击这里查看最新版本

如何创建Web应用程序

这是对建筑的一般介绍网络应用程序,使用《泰坦尼克号》数据集。泰坦尼克数据集与RapidMiner Studio捆绑在存储库中。

如果你已经为RapidMiner服务器创建了一个Web应用程序,并且你需要高吞吐量-快速预测和低延迟-请阅读RapidMiner实时评分

Web应用程序的范围

RapidMiner Web应用程序是向最终用户呈现结果的方法之一。Web应用程序是用户可以查看、探索和更改数据的Web界面。它们还可以触发RapidMiner进程来更新结果。

Web应用程序与RapidMiner进程紧密相连。事实上,Web应用程序中的所有逻辑都是在RapidMiner进程中定义的。这种紧密的集成使Web应用程序设计人员能够为最终用户提供各种深入的分析选项。特别是,最终用户不需要有RapidMiner Studio。

Web应用程序的一般概念

如前所述,RapidMiner Web Apps的一个关键概念是所有逻辑都在RapidMiner进程中定义。与仪表板交互的方式是将对象(主要是表或文档)发布到服务器。的RapidMiner服务器带有两个重要的Web应用操作符。发布到App从App中召回。这些操作符允许发布任何可以通过RapidMiner Studio中的连接运行到Web应用程序的对象。Web应用程序本身只是这些结果的可视化。

此外,Web应用程序允许最终用户与发布的结果进行交互。Web应用中的交互只是触发其他RapidMiner进程,这些进程可能会生成新数据、召回应用对象或更新应用对象。每次发布或更新对象时,所有依赖的可视化都将更新。

为了能够构建Web应用程序,你应该熟悉:

  • 执行过程操作符
  • ETL功能
  • 高级操作符分支处理异常

因为你会大量使用这些东西。

请注意,所有已发布的应用程序都是会话感知的。这意味着你在Studio中创建的所有应用对象都只存在于你的Studio中。如果你在Web应用中创建对象,它们只存在于这个会话中。其他用户不需要。如果你重新登录到web界面,它们也不可用。另一件需要注意的事情是,由调度进程操作符触发的进程不在同一个会话中。

构建我们的第一个Web应用程序

在本教程中,我们将基于泰坦尼克号的数据集构建一个小型Web应用程序。这个Web应用程序可以看作是一个显示基本功能的“hello world”Web应用程序。通过与常见的web技术(JavaScript, CSS, XSLT)或创造性地使用RapidMiner进程(连接到云服务,web挖掘,数据库等)进行交互,可以实现许多高级功能。

一些一般性评论

为了完成我们的示例,我们首先需要在Server上创建一个文件夹。作为一个最佳实践,我们在RapidMiner推荐一个文件夹结构像这样的所有项目:

  • 应用程序-包含应用程序的所有进程
  • 数据-包含所有数据
  • 调试-包含调试数据和进程
  • 流程-包含实际数据分析的所有过程,例如建模
  • 子流程-如果需要,你可以使用你在主函数中调用的函数。
  • 结果-表演,模特等。在大型项目中,有一个单独的模型文件夹可能是有用的
  • 网络服务-可以通过web服务访问的进程

之后,我们需要上传《泰坦尼克号》数据(全部三个)从Sample目录转移到我们的服务器(右击复制,右击粘贴)。通过这种方式,我们可以确保服务器本身拥有数据集。请注意,服务器只能访问其存储库中的对象和通过共享连接提供的对象。为了在Server和Studio上使用数据库,您需要定义服务器上的连接,并与Studio共享此连接。

创建应用程序

上传数据后,我们将在服务器的Web界面中创建Web应用程序。要做到这一点,请转到服务器的ip地址并登录。之后,你可以通过点击左边的链接切换到Web App设计器。点击New App创建一个新的App。

上面的屏幕是在服务器端开发Web应用程序的主屏幕。请先通过点击上方面板中的小光盘存储应用程序。web-app通常放在你创建的项目的app文件夹中。请注意,在Web应用程序设计器中没有自动安全功能。建议经常保存。你也可以在界面顶部设置应用的名称。

初始化过程

Web应用程序中的一个主要内容是所谓的初始化过程。如果你打开Web应用程序,这个进程将被执行。这个进程通常是一个元进程,有几个执行过程操作符。这个过程负责发布所有的应用对象,所以当应用打开时,它们在应用中是可用的。作为一般惯例,这个过程被称为初始化!并且位于应用程序目录中。请在app文件夹中创建一个空进程。将此进程作为初始化进程添加到主Web App界面中。确保保存你的进度。

一个表

让我们从一张桌子开始。为此,我们需要首先在流程中发布数据。请先创建进程并保护它。名称可以是Publish Table Data。该过程应该检索泰坦尼克号培训数据并将其连接到发布到应用程序操作符。类中使用相对路径检索操作符。绝对路径不能在RapidMiner服务器上使用。

我们需要在Publish to App中配置一个名称。在较大的应用中,通常会发布很多应用对象。通常在应用程序对象的前面加上标签(我们将在后面讨论这个问题),它们将被显示在其中。在我们的例子中,我们可以用主要:TableData。对于全局应用对象,你可以使用:: TableData。这个过程已经足够显示表格了。但是这个对象需要在Web App中为用户构建。要做到这一点,您需要将此进程作为执行进程添加到初始化!的过程。

一定要保存这个过程。现在我们已经完成了Studio方面的工作。让我们转到服务器。请单击初始化过程位置旁边的蓝色箭头重新运行初始化过程。之后移动到布局选项卡。在这个选项卡中,我们可以安排不同的可视化组件。通过单击上面板中的New component按钮,可以使用仪表板的组件。

请添加新的可视化你可以用右下角的小三角形来调整组件的大小。要编辑可视化,您可以移动对象并单击右上方的编辑按钮。

让我们首先将对象重命名为Table Representation。之后我们可以移动到数据和格式配置可视化。

首先通过设置subscribe to object to来订阅我们刚刚发布的对象主要:TableData。然后,我们需要配置如何显示数据。在我们的示例中,这将是一个简单的表。所以请选择表格作为输出格式。您可以通过单击Refresh按钮获得可视化的预览。

在提交更改并保存进度之后,我们可以通过单击上方面板中的预览来移动到预览。结果应该是这样的:

如果你想删除列,或者重新排序它们,你可以在RapidMiner进程中这样做(使用选择属性和重新排序属性)

used table选项提供了一些很好的特性,比如在表中排序。对于较大的表,您将体验到更长的渲染时间。为了避免这种情况,你可以使用普通的HTML表格,并使用自定义的CSS样式。要做到这一点,你需要做出选择超文本标记语言作为输出格式,并提供一个CSS。我们将在以后的会议中讨论这个问题。

可视化-饼图和条形图

在建立了第一个简单的可视化之后,我们可以继续做更多的事情。我们从a开始饼状图,然后继续前进条形图。同样,关键的想法是在Studio中做所有的数据准备,只在Server上可视化。

作为第一步,我们想建立一个饼状图,计算泰坦尼克号灾难的幸存者和非幸存者的数量。为此,我们需要在Studio中创建一个这样的表

活了下来
没有 567
是的 349

为此,我们只需使用一个Aggregate操作符进行计算活了下来然后按活了下来。出于视觉原因,我们可以重命名计数(存活)数。结果表将被发布到app主要:PieChartData

这是来自工作室的部分。让我们转到Server接口来显示它。再次创建一个可视化,重新命名它并订阅对象主要:PieChartData。这次我们用a图表HTML5)作为输出格式。我们选择作为图表类型和使用活了下来作为索引属性和作为值属性。

作为下一步,我们想创建Age属性的折线图。为此,我们创建了一个名为获取折线图的过程。我们可以先离散年龄。我建议使用用宾宁离散在0到100之间使用10个箱子。之后,我们再次按年龄和幸存人数进行分组汇总。你也可以重命名计数(存活)使用重命名操作符进行计数。之后我们将其发布为MainView: CountByAge。这个过程是这样的

这可以再次形象化。创建一个新的可视化,订阅MainView: CountByAge并选择图表类型系列和索引属性Age。结果是这样的

现在您已经了解了可视化的一般概念,并且可以构建静态仪表板。在下一步中,我们将专注于让它们更具互动性

如果您希望在上面的图中有多条线,只需按多个属性分组即可。之后,需要对表进行透视,因为RM Server期望得到这样的表

年龄 count_1 count_2
10 2 3.
20. 5 1

按钮

接下来我们想添加一个按钮。这个按钮将刷新应用程序上的数据。在我们的例子中,这并没有做那么多,但在我们不使用静态数据集,而是使用数据库作为数据源的情况下,它会这样做。要添加一个按钮,请转到web前端并单击new component。选择一个按钮组件。移动到编辑菜单,类似于编辑可视化。

你可以给按钮一个文本(如果你想要一个图像)。在我们的例子中,文本将是Refresh。您可以为单击按钮添加几种效果。效果可以是流程的触发器、视图(选项卡)的更改或变量的设置。在本例中,我们将触发一个流程。请点击按钮菜单下端的添加运行过程效果。然后,您可以选择应该在单击按钮后运行的进程。在我们的例子中,这是初始化!进程,它重新发布所有对象。就是这样。

正在运行的进程会阻止应用程序中任何进一步的用户交互。如果你有运行时间超过几秒钟的进程,你可能想要异步运行它们。这可以使用Schedule Process操作符来完成。请注意,在计划进程中发布的应用对象在应用中不可用。这种构造的一个用例是重新学习按钮。

变量

除了发布(和召回)应用对象,还有第二种方法在进程和web界面之间传递信息。虽然发布通常是对复杂的数据结构(通常是示例集或文档,有时也包括文件对象)进行的,但变量的概念是在基本类型级别上。基本类型有:数字、字符串、日期和多项式(类)。变量的基本概念是将它们转换为流程宏。默认情况下,如果进程具有与服务器变量同名的宏,则隐式传递变量值。

领域、域和变量

在RapidMiner Server中,变量是域的实例。域是数据类型的模板。这个模板可以非常不同。常见的例子有正整数、默认为空字符串的文本、默认日期为今天前7天的日期等。所有这些领域都存在于所谓的领域中。领域是一个项目。通常一个领域被分配给一个Web应用程序。

创建变量

下一步,我们将首先创建一个变量,然后使用这个变量来过滤我们的主表。我们要创建一个名为Age的变量,它是一个正整数。为此,我们首先需要创建一个领域。要做到这一点,到左上角选择快速导航在上面板。请在下拉菜单中选择“管理域”。然后点击上面面板上的新按钮。这将引导您进入新领域的生成对话框

给你的领域命名-我会选择教程领域-并保存它。要添加新域,请使用上面面板中的To +按钮并选择适当的原语类型。在我们的例子中,我们选择一个数字定义域。我们将创建一个名为positive Integer的域,它不仅可以用于年龄。预设值为0,最小值为0,最大值为9999,当然是整数。创建域名后,您可以通过单击左侧面板上的应用程序并选择它来返回应用程序。

现在我们需要将创建的领域添加到应用程序中。这可以在应用程序的常规设置选项卡中完成。

现在可以切换到Variables选项卡并添加一个新变量。这个应该叫做minAge并具有显示名称最小的年龄。第一个在内部使用,是相应宏的名称。另一方面,后一个是将显示给用户的名称。定义域当然是正整数。确保应用程序安全。

有时,新创建的域在域的下拉列表中不可用。重新登录服务器可以解决此问题

最好的做法是使用驼峰大小写,在宏名前加一个小写字母。所以它是myMacroValue。这也适用于服务器变量。

用户输入元素

我们想创建一个新的用户输入组件。该组件将使用该变量minAge并且将过滤表中年龄大于此值的乘客。为此,我们需要首先创建一个过滤器流程。这个过程叫做更新表并且有一个名为minAge的宏。这个宏可以初始化为任何值。

该过程本身将召回主要:TableData对象,过滤客户并重新发布。要在Studio中有一个下拉菜单,你可以运行初始化!在本地进程。

完成这些之后,我们可以再次移动到web界面。我们只需要创建一个新的组件-新用户输入。点击编辑按钮,就像您之前对按钮和可视化所做的那样,来配置行为。我们可以添加一个或,如果我们有,更多的变量可以改变这个面板。之后,我们可以添加效果,如果用户点击提交,或者在提交的情况下,如果他改变了值发生任何变化。交互将是一个运行过程,并将运行我们的更新表的过程。

请记住,服务器变量被映射到同名的进程宏。因此,我们可以使用名称作为宏访问变量minAge。这就是用户输入组件。表将被更新,因为订阅的应用对象。图表没有更新。有关详细信息,请参阅下面的说明。

目前的设置有一些缺陷。首先,我们的图表没有使用用户输入组件进行更新。另一个问题是,过滤器总是应用于当前显示的数据集。如果您首先筛选200,您将得到一个空表。如果之后将过滤器设置为20,则不会得到任何结果。

功能方法

您可能知道,可以使用执行过程操作符,例如具有数据输入和变量输入(宏)的函数。我们的项目可以以某种方式重新设计,我们的可视化过程将表格作为输入,并为可视化准备表格。在我们的初始化!过程中,我们将加载完整的日期并将其传递给所有可视化进程。在更新过程中,我们将再次进行非常类似的操作,但只传递一个过滤后的示例集。

要做到这一点,我们需要更改所有四个现有流程。它们都不应该自己检索数据集,而是将其作为输入获取,如下面的发布折线图所示:

初始化!进程现在可以将数据推送到这些进程中:

这样做之后,我们可以很容易地改变更新表处理并使其更新我们Web应用程序上的所有组件。

这个设置现在将更新我们所有的图表。

如果你的Web应用包含很多过滤,你可能需要一次又一次地从数据库中获取数据。如果你有一个中等大小的数据集,你可以使用一个app对象在内存中拥有完整的数据,并且只处理这些数据。的初始化!进程将发布一个类似的表:: FullData所有其他的过程都是这样的。具体设置取决于您的数据。

图中的交互

下一步,我们将引入图中的交互。具体来说,我们将在饼图上添加第二个过滤器。如果用户单击“是”部分,他将只看到幸存的乘客,反之亦然。要做到这一点,我们需要创建一个新的域称为自由文本预设所有。这个域是一个预设了All的文本。请在此域中创建一个变量survivalFilter

设置完成后,我们需要在创建的filter Table流程中添加过滤器。首先,我们需要在这个过程中引入一个新的宏survivalFilter。然后我们需要一个分支操作员。过滤器应该只在我们选择某些东西时才会发生。因此,我们选择作为分支表达式的条件类型并使用% {survivalFilter} = =“所有”表达式。如果我们选择了All,我们什么都不想做。如果我们设置了一些东西,我们想要过滤它。这导致了这个设置

在实现(并保存)这一点之后,我们需要将交互添加到可视化中。编辑饼状图并移动到交互选项卡。如果单击预览中的饼状图,可以看到将哪些值设置为哪个变量。在本例中,我们希望使用clicked属性并将变量设置为它。这样做之后,我们需要添加一个新的效果。这也是一个运行进程,它运行更新表的过程。

这就是交互作用。现在我们得到了一个完全互动的应用程序。

选项卡和视图

我们现在有一个相当完整的屏幕-但我们可能想要添加更多的可视化。一种方法是创建一个更大的画布。画布的大小可以在General Information选项卡中定义。更大的屏幕并不总是有用的。在RM服务器web应用程序上,我们还可以为用户添加标签。

选项卡基于视图。视图只是我们应用程序的一个新的画布。我们目前只有一个视图-称为新视图。如果我们去组件选项卡,我们可以通过点击名称来重命名它。我们把它重命名为主要的观点。我们可以通过点击添加另一个视图新视图在上面板。添加一个新视图并将其重命名为详细信息视图

现在,您可以使用上拉面板更改视图之间的切换。有两种方法可以使用户访问视图。一种是在按钮、用户输入面板或可视化上使用交互。您可以简单地添加一个交互来切换视图。一个典型的例子是需要确认的删除按钮。

另一种使视图可访问的方法是使用选项卡。如果你去选项卡选项卡,你可以创建新的选项卡。切换选项卡通常(但不一定)被指定为切换到另一个视图。您还可以触发一些只更改当前视图内容的流程。在本例中,我们通过单击左侧的add效果创建了两个选项卡,这是我们刚刚创建的视图。创建一个名为主要并添加一个效果更改视图到主要的观点。添加另一个标签细节并添加拟合效果。如果我们保存应用程序并进入预览,我们会在Web应用程序的上部看到选项卡。

如果你有一个大型的网络应用,你可能会遇到这个问题初始化!处理过程需要几秒钟以上的时间。对于用户来说,这通常太多了。为了减少这个问题,你可以拆分初始化!处理并只执行初始化!启动时主视图的进程。然后你可以创建初始化!每个选项卡的进程,可以在更改选项卡之前执行。

结论

现在我们一起构建了一个基本的Web应用程序。您了解Web应用程序创建的基础知识,并可以将它们与您在RapidMiner进程中可以想象的所有功能结合起来。当然,在高级教程中还会包含更多的选项,比如选择树、CSS、各种api的集成、在应用对象中使用文档等。但所有这些东西都是基于你在本教程中学到的,并且是直接的。