Knime 简明教程
KNIME - Introduction
由于其神秘性,开发机器学习模型总是被认为非常具有挑战性。通常,要开发机器学习应用程序,你必须是一个精通命令驱动开发的优秀开发人员。KNIME 的推出使机器学习模型的开发进入普通人的视野。
KNIME 为整个开发提供了一个图形界面(一个用户友好的 GUI)。在 KNIME 中,你只需定义其存储库中提供的各种预定义节点之间的工作流即可。KNIME 提供了几个预定义组件,称为节点,用于各种任务,例如读取数据、应用各种 ML 算法以及以各种格式可视化数据。因此,使用 KNIME 时不需要任何编程知识。这难道不激动人心吗?
本教程的后几章将教你如何使用几种经过充分测试的 ML 算法掌握数据分析。
KNIME - Installation
KNIME 分析平台适用于 Windows、Linux 和 MacOS。在本节中,让我们了解在 Mac 上安装该平台的步骤。如果您使用 Windows 或 Linux,只需按照 KNIME 下载页面上给定的安装说明进行操作即可。所有三个平台的二进制安装都可以在 KNIME’s page 中获得。
KNIME - First Run
双击 KNIME 图标以启动 KNIME 分析平台。最初,系统会要求你设置一个工作空间文件夹来保存你的工作。你的屏幕将如下所示 -
您可以将所选的文件夹设为默认值,下次启动 KNIME 时,将不再
显示该对话框。
一段时间后,KNIME 平台将在您的桌面上启动。这是您开展分析工作的工作台。现在让我们看看工作台的各个部分。
KNIME - Workbench
当你启动 KNIME 时,你将看到以下屏幕 -
正如屏幕截图中标记的那样,工作台包含多个视图。我们立即可以使用的视图已在屏幕截图中标记,并列在下面 -
-
Workspace
-
Outline
-
Nodes Repository
-
KNIME Explorer
-
Console
-
Description
随着我们在本章中向前推进,让我们详细了解这些视图。
Workspace View
对我们来说,最重要的视图是 Workspace 视图。这就是你创建机器学习模型的地方。工作空间视图在下面的屏幕截图中突出显示 -
屏幕截图显示了一个打开的工作空间。你很快就会学会如何打开现有工作空间。
每个工作空间包含一个或多个节点。你将在本教程的后面部分了解这些节点的重要性。这些节点通过箭头连接。通常,程序流是从左到右定义的,尽管这不是必需的。你可以在工作空间中的任何位置自由移动每个节点。两个之间的连接线会适当地移动以保持节点之间的连接。你可以在任何时候添加/删除节点之间的连接。对于每个节点,可以选择添加一小段描述。
Outline View
工作空间视图可能无法一次向你显示整个工作流。这就是提供了轮廓视图的原因。
轮廓视图显示整个工作空间的微型视图。此视图中有一个缩放窗口,你可以将其滑动以查看 Workspace 视图中工作流的不同部分。
Node Repository
这是工作台中下一个重要的视图。节点存储库列出可用于你的分析的各种节点。整个存储库根据节点功能进行了很好的分类。你会发现如下类别 -
-
IO
-
Views
-
Analytics
在每个类别下,你会发现几个选项。只需展开每个类别视图即可查看你拥有的内容。在 IO 类别下,你会找到以各种文件格式(如 ARFF、CSV、PMML、XLS 等)读取数据的节点。
根据你的输入源数据格式,你将选择相应的节点来读取你的数据集。
到目前为止,你可能已经理解了节点的目的。节点定义了你可以在工作流中以可视方式包含的特定功能。
Analytics 节点定义了各种机器学习算法,例如贝叶斯、聚类、决策树、集成学习等等。
这些不同的 ML 算法的实现都在这些节点中提供。要在你的分析中应用任何算法,只需从存储库中选取所需的节点并将其添加到你的工作空间即可。将 Data reader 节点的输出连接到此 ML 节点的输入,然后你的工作流就创建好了。
我们建议您浏览存储库中提供/可用的各种节点。
KNIME Explorer
工作台中下一个重要的视图是 Explorer 视图,如下面的截图所示 −
前两个类别列出了在 KNIME 服务器上定义的工作空间。第三个选项 LOCAL 用于存储您在本地计算机上创建的所有工作空间。尝试展开这些选项卡以查看各种预定义的工作空间。特别是展开 EXAMPLES 选项卡。
KNIME 提供了多个示例,可帮助您入门该平台。在下一章中,您将使用其中一个示例来熟悉该平台。
Description View
我们立即需要关心的最后一个重要视图是 Description 视图。此视图提供了工作空间中所选项目的描述。典型的视图如下图所示 −
上图显示了 File Reader 节点的描述。当您选择工作空间中的 File Reader 节点时,您将在该视图中看到其描述。单击任何其他节点将显示所选节点的描述。因此,在学习的初始阶段,当您不确切了解工作空间中各个节点的目的和/或节点存储库时,此视图非常有用。
KNIME - Running Your First Workflow
KNIME 提供了几个良好的工作流程,以方便学习。在本节中,我们将选择安装中提供的其中一个工作流程,以解释分析平台的各种功能和强大功能。在我们的研究中,我们将使用基于 Decision Tree 的简单分类器。
Loading Decision Tree Classifier
在 KNIME 浏览器中找到以下工作流程 −
LOCAL / Example Workflows / Basic Examples / Building a Simple Classifier
您也可以在下面的屏幕截图中进行快速参考 −
双击选定的项目以打开工作流。观察工作区视图。您将看到包含多个节点的工作流。此工作流程的目的是从 UCI 机器学习存储库中获取的成人数据集的民主属性中预测收入组。此机器学习模型的任务是将特定区域中收入高于或低于 5 万美元的人归类。
Workspace 视图及其实例如下图所示 −
注意从 Nodes 存储库中选取的几个节点,并通过箭头连接到工作流中。连接表示一个节点的输出馈送到下一个节点的输入中。在我们了解工作流中每个节点的功能之前,让我们首先执行整个工作流。
Executing Workflow
在了解工作流程的执行之前,了解每个节点的状态报告非常重要。检查工作流中的任何节点。在每个节点的底部,您会找到一个包含三个圆圈的状态指示器。决策树学习器节点如下图所示 −
状态指示器为红色,表示此节点到目前为止尚未执行。在执行期间,黄色的中心圆圈将亮起。在执行成功后,最后一个圆圈变为绿色。还有更多指标可以让您在出现错误的情况下获取状态信息。当处理中出现错误时,您将了解这些指标。
请注意,当前所有节点上的指示器均显示为红色,表示到目前为止还没有任何节点执行。要运行所有节点,请单击以下菜单项:
Node → Execute All
过一会儿,你会发现每个节点状态指示器现已变为绿色,表示没有错误。
在下一章中,我们将探讨工作流中各个节点的功能。
KNIME - Exploring Workflow
如果你查看工作流中的节点,你会发现它包含以下内容:
-
文件读取器,
-
颜色管理器
-
分区
-
决策树学习器
-
决策树预测器
-
得分
-
交互式表
-
散点图
-
统计信息
这些很容易在 Outline 视图中看到,如下所示:
每个节点在工作流中提供特定功能。现在,我们将研究如何配置这些节点以满足所需功能。请注意,我们将仅讨论与我们在当前探索工作流上下文中相关的节点。
File Reader
文件读取器节点在下图中显示:
窗口顶部有一些由工作流创建者提供的说明。它告诉这个节点读取成人数据集。文件名称为 adult.csv ,从节点符号下的说明中可以看到。 File Reader 有两个输出 - 一个转到 Color Manager 节点,另一个转到 Statistics 节点。
如果你右键单击 File Manager ,将弹出一个菜单,如下所示:
Configure 菜单选项允许节点配置。 Execute 菜单运行节点。请注意,如果节点已经运行并且处于绿色状态,则此菜单将被禁用。此外,还请注意 Edit Note Description 菜单选项的存在。这允许你为你的节点编写说明。
现在,选择 Configure 菜单选项,它将显示一个包含 adult.csv 文件数据并如图所示的屏幕截图 −
当执行此节点时,数据将加载到内存中。整个数据加载程序代码都对用户隐藏。你现在可以欣赏这些节点的有用性——无需编码。
我们的下一个节点是 Color Manager 。
Color Manager
选择 Color Manager 节点,并通过右键单击进入其配置。将显示颜色设置对话框。从下拉列表中选择 income 列。
你的屏幕将类似于下面 −
请注意是否存在两个约束。如果收入低于 50K,则数据点将获得绿色,如果收入较高,则将其变为红色。当我们在本章后面查看散点图时,你将看到数据点映射。
Partitioning
在机器学习中,我们通常将所有可用数据分成两部分。较大的一部分用于训练模型,而较小的一部分用于测试。有不同的策略用于对数据进行分区。
要定义所需的划分,请右键单击 Partitioning 节点并选择 Configure 选项。你将看到以下屏幕 −
在这种情况下,系统建模器使用了 Relative (%) 模式,并且数据以 80:20 的比例进行分割。在进行分割时,将随机拾取数据点。这确保你的测试数据不会有偏差。对于线性采样,剩余的 20% 用于测试的数据可能无法正确表示训练数据,因为它在收集过程中可能完全偏向。
如果你确定在数据收集期间确保了随机性,那么你可以选择线性采样。一旦数据准备好用于训练模型,请输入下一个节点,即 Decision Tree Learner 。
Decision Tree Learner
顾名思义, Decision Tree Learner 节点使用训练数据并构建模型。查看此节点的配置设置,如下图所示 −
正如你所看到的, Class 是 income 。因此,树将基于收入列构建,而这是我们在此模型中要达到的目标。我们需要将收入高于或低于 50K 的人分离。
此节点成功运行后,你的模型将准备好进行测试。
Decision Tree Predictor
决策树预测器节点将开发的模型应用于测试数据集并附加模型预测。
预测器的输出馈送到两个不同的节点 - Scorer 和 Scatter Plot 。接下来,我们将检查预测的输出。
Scorer
此节点生成 confusion matrix 。要查看它,请右键单击该节点。你将看到以下弹出菜单 −
单击 View: Confusion Matrix 菜单选项,矩阵将如图所示在单独的窗口中弹出 −
它表示我们开发的模型的准确性为 83.71%。如果你对此不满意,你可以尝试使用其他参数进行模型构建,特别是,你可能想要重新查看并清理你的数据。
Scatter Plot
要查看数据分布的散点图,请右键单击 Scatter Plot 节点并选择菜单选项 Interactive View: Scatter Plot 。你将看到以下绘图 −
该图给出了基于 50K 阈值的两种不同颜色的点(红色和蓝色)的不同收入人群的分布。这些是我们 Color Manager 节点中设置的颜色。分布相对于在 x 轴上绘制的年龄。你可以通过更改节点的配置为 x 轴选择不同的特征。
配置对话框显示在这里,我们在其中选择 marital-status 作为 x 轴的特征。
这完成了我们对 KNIME 提供的预定义模型的讨论。我们建议你在模型中学习其他两个节点(统计和交互式表格)。
现在让我们继续本教程中最重要的部分——创建你自己的模型。
KNIME - Building Your Own Model
在本教程中,您将基于一些观察到的特征构建自己的机器学习模型以对植物进行分类。为此,我们将使用 UCI Machine Learning Repository 的众所周知的 iris 数据集。该数据集包含三个不同的植物类别。我们将训练我们的模型以将未知植物分类为这三个类别之一。
我们将从在 KNIME 中创建一个新工作流开始,用于创建机器学习模型。
Creating Workflow
要在 KNIME 工作台中创建一个新工作流,选择以下菜单选项。
File → New
您将看到以下屏幕:
选择 New KNIME Workflow 选项,然后单击 Next 按钮。在下一个屏幕上,系统会要求您输入工作流的所需名称和保存它的目标文件夹。根据需要输入此信息,然后单击 Finish 以创建一个新的工作区。
将带给定名称的新工作空间添加到 Workspace 视图中,如下所示 −
你现在将添加此工作空间中的各个节点以创建模型。在添加节点之前,必须下载和准备 iris 数据集以供我们使用。
Preparing Dataset
从 UCI 机器学习仓库网站 Download Iris Dataset 下载鸢尾花数据集。下载的 iris.data 文件为 CSV 格式。我们将做一些更改以添加列名称。
在喜欢的文本编辑器中打开下载的文件,并在开头添加以下行。
sepal length, petal length, sepal width, petal width, class
当我们的 File Reader 节点读取此文件时,它将自动将上述字段作为列名称。
现在,你将开始添加各个节点。
Adding File Reader
转到 Node Repository 视图,在搜索框中输入“文件”以找到 File Reader 节点。这在下图中可见 −
选择 File Reader 并双击,将节点添加到工作空间。或者,你可以使用拖放功能将节点添加到工作空间。添加节点后,你将需要对其进行配置。右键单击节点并选择 Configure 菜单选项。你已经在前面的课程中这么做过。
在加载数据文件后,设置屏幕如下所示。
要加载数据集,请单击 Browse 按钮并选择 iris.data 文件的位置。节点将加载文件内容,这些内容显示在配置框的下部分中。一旦你确认数据文件已正确定位并加载,请单击 OK 按钮以关闭配置对话框。
现在你将向此节点添加一些注释。右键单击节点并选择 New Workflow Annotation 菜单选项。屏幕上将出现一个注释框,如下图所示:
单击该框内并添加以下注释 −
Reads iris.data
单击该框外的任意位置以退出编辑模式。根据需要调整大小并将框放置在节点周围。最后,双击节点下方的 Node 1 文本来将此字符串更改为以下内容 −
Loads data
此时,屏幕将如下所示 −
现在我们将添加一个新节点,将加载的数据集分区为训练和测试。
Adding Partitioning Node
在 Node Repository 搜索窗口中,键入几个字符以找到 Partitioning 节点,如下面的屏幕截图所示 −
将节点添加到我们的工作空间。将配置设置为以下内容 −
Relative (%) : 95
Draw Randomly
以下屏幕截图显示了配置参数。
接下来,在两个节点之间建立连接。为此,请单击 File Reader 节点的输出,保持鼠标按钮单击,将出现一根橡皮筋线,将其拖动到 Partitioning 节点的输入,松开鼠标按钮。现在就在两个节点之间建立了连接。
添加注释,更改说明,按需要放置节点和注释视图。此时您的屏幕应如下 -
接下来,我们将添加 k-Means 节点。
Adding k-Means Node
从资源库中选择 k-Means 节点并将其添加到工作区。如果您想要复习有关 k-Means 算法的知识,只需在工作台的说明视图中查找其说明即可。这在下面的屏幕截图中有所展示 -
顺便提一下,在最后决定使用哪种算法之前,您可以在说明窗口中查找不同算法的说明。
打开节点的配置对话框。我们将使用以下所示字段的所有默认值 -
单击 OK 接受默认值并关闭对话框。
将注释和说明设为以下内容 -
-
Annotation: Classify clusters
-
Description:Perform clustering
将 Partitioning 节点的顶部输出连接到 k-Means 节点的输入。重新定位您的项目,您的屏幕应如下 -
接下来,我们将添加一个 Cluster Assigner 节点。
Adding Cluster Assigner
Cluster Assigner 为现有原型集分配新数据。它需要两个输入 - 原型模型和包含输入数据的资料表。在说明窗口中查找节点的说明,该说明在下方的屏幕截图中有所描述 -
因此,对于此节点,您必须建立两个连接 -
-
Partitioning 节点的 PMML 集群模型输出 → Cluster Assigner 的原型输入
-
Partitioning 节点的第二个分区输出 → Cluster Assigner 的输入数据
这两个连接在下方的屏幕截图中有所展示 -
Cluster Assigner 不需要任何特殊配置。只需接受默认值即可。
现在,向此节点添加一些注释和说明。重新排列您的节点。您的屏幕应如下 -
至此,我们的集群完成。我们需要以图表方式可视化输出。为此,我们将添加一个散点图。我们将在散点图中为三个类别分别设置颜色和形状。因此,我们首先将 k-Means 节点的输出通过 Color Manager 节点再通过 Shape Manager 节点进行过滤。
Adding Color Manager
在资源库中查找 Color Manager 节点。将其添加到工作区。保留其默认配置。请注意,您必须打开配置对话框并点按 OK 才能接受默认值。为节点设置说明文本。
从 k-Means 的输出到 Color Manager 的输入建立一个连接。此时您的屏幕应如下 -
KNIME - Testing the Model
要测试模型,请执行以下菜单选项: Node → Execute All
如果一切都正确,每个节点底部的状态信号将变为绿色。如果没有,你需要查找 Console 视图中的错误,修复它们并重新运行工作流。
现在,你可以准备可视化模型的预测输出。为此,右键单击 Scatter Plot 节点并选择以下菜单选项: Interactive View: Scatter Plot
这在下面的屏幕截图中显示 -
你将在屏幕上看到如下图所示的散点图 -
你可以通过改变 x 轴和 y 轴来运行不同的可视化。若要执行此操作,请单击散点图右上角的设置菜单。将出现一个弹出菜单,如下面的屏幕截图所示 -
你可以在此屏幕上设置图表的各种参数,以便从多个方面可视化数据。
这完成了我们的模型构建任务。