类别

版本

您正在查看的是RapidMiner Server 9.1 -版本文档查看最新版本

如何创建Web应用程序

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

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

Web应用的范围

RapidMiner Web Apps是向最终用户展示结果的一种方式。Web应用程序是一种Web界面,用户可以在其中查看、浏览和更改数据。它们还可以触发RapidMiner进程来更新结果。

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

Web应用程序的一般概念

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

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

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

  • 执行过程操作符
  • ETL功能
  • 高级操作员,比如分支而且处理异常

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

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

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

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

一些一般性意见

要执行我们的示例,我们首先需要在Server上创建一个文件夹。作为最佳实践,我们在RapidMiner建议所有项目都使用这样的文件夹结构:

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

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

创建应用程序

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

上面的屏幕是在服务器端开发Web应用程序的主屏幕。请存储应用程序首先点击小圆盘在面板上。web-app的常用位置是在你创建的项目的app文件夹中。请注意,Web应用程序设计器中没有自动保险箱。建议经常保存。您还可以在界面顶部设置应用程序的名称。

初始化过程

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

一个表

让我们从一张表格开始。为此,我们需要首先在流程中发布数据。请先创建进程并保护它。名称可以是发布表数据。该过程应该检索泰坦尼克训练数据,并将其连接到一个发布到应用程序操作符。方法中使用相对路径检索操作符。RapidMiner服务器不支持绝对路径。

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

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

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

让我们先将对象重命名为表表示。之后我们可以搬到资料及格式配置可视化。

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

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

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

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

可视化——饼图和条形图

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

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

活了下来
没有 567
是的 349

要做到这一点,我们只需使用一个计算的Aggregate操作符活了下来分组活了下来.为了视觉效果,我们可以重命名计数(存活)数。生成的表将被发布到app as主要:PieChartData

这又是演播室部分的内容。让我们转到服务器界面来显示它。再次创建一个可视化,重命名它并订阅对象主要:PieChartData.这次我们使用a图表HTML5)作为输出格式。我们选择作为图表类型和使用活了下来作为Index属性作为Value属性。

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

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

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

如果您想在上面的图中有多个行,您只需要对By多个属性进行分组。之后,您需要对表进行透视,因为RM服务器期望这样的表

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

按钮

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

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

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

变量

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

领域,领域和变量

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

创建变量

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

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

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

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

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

对于宏名,使用驼色大小写和前导小写字母是最佳实践。它是myMacroValue。这也适用于服务器变量。

用户输入元素

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

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

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

请记住,服务器变量被映射到同名的处理宏。因此,我们能够以宏的名称访问变量minAge.这就是用户输入组件的内容。该表将被更新,因为订阅的应用程序对象。图表没有更新。详细信息请参见下面的说明。

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

函数方法

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

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

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

之后,我们可以很容易地改变更新表处理并让它更新我们Web App上的所有组件。

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

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

图中的交互

下一步,我们想在图中引入交互。具体来说,我们将在饼图上添加第二个过滤器。如果用户单击“是”部分,他将只看到幸存的乘客,反之亦然。为此,我们需要创建一个名为free text with preset all的新域。该域名为预设“All”的文本。请在此域中创建一个名为survivalFilter

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

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

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

选项卡和视图

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

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

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

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

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

结论

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