Knime 简明教程

KNIME - Quick Guide

KNIME - Introduction

由于其神秘性,开发机器学习模型总是被认为非常具有挑战性。通常,要开发机器学习应用程序,你必须是一个精通命令驱动开发的优秀开发人员。KNIME 的推出使机器学习模型的开发进入普通人的视野。

KNIME 为整个开发提供了一个图形界面(一个用户友好的 GUI)。在 KNIME 中,你只需定义其存储库中提供的各种预定义节点之间的工作流即可。KNIME 提供了几个预定义组件,称为节点,用于各种任务,例如读取数据、应用各种 ML 算法以及以各种格式可视化数据。因此,使用 KNIME 时不需要任何编程知识。这难道不激动人心吗?

本教程的后几章将教你如何使用几种经过充分测试的 ML 算法掌握数据分析。

KNIME - Installation

KNIME 分析平台适用于 Windows、Linux 和 MacOS。在本节中,让我们了解在 Mac 上安装该平台的步骤。如果您使用 Windows 或 Linux,只需按照 KNIME 下载页面上给定的安装说明进行操作即可。所有三个平台的二进制安装都可以在 KNIME’s page 中获得。

Mac Installation

从 KNIME 官方网站下载二进制安装。双击下载的 dmg 文件以开始安装。当安装完成后,只需将 KNIME 图标拖到应用程序文件夹中,如下所示 −

mac installation
copy knime

KNIME - First Run

双击 KNIME 图标以启动 KNIME 分析平台。最初,系统会要求你设置一个工作空间文件夹来保存你的工作。你的屏幕将如下所示 -

您可以将所选的文件夹设为默认值,下次启动 KNIME 时,将不再

launch knime

显示该对话框。

一段时间后,KNIME 平台将在您的桌面上启动。这是您开展分析工作的工作台。现在让我们看看工作台的各个部分。

KNIME - Workbench

当你启动 KNIME 时,你将看到以下屏幕 -

workbench

正如屏幕截图中标记的那样,工作台包含多个视图。我们立即可以使用的视图已在屏幕截图中标记,并列在下面 -

  1. Workspace

  2. Outline

  3. Nodes Repository

  4. KNIME Explorer

  5. Console

  6. Description

随着我们在本章中向前推进,让我们详细了解这些视图。

Workspace View

对我们来说,最重要的视图是 Workspace 视图。这就是你创建机器学习模型的地方。工作空间视图在下面的屏幕截图中突出显示 -

workspace view

屏幕截图显示了一个打开的工作空间。你很快就会学会如何打开现有工作空间。

每个工作空间包含一个或多个节点。你将在本教程的后面部分了解这些节点的重要性。这些节点通过箭头连接。通常,程序流是从左到右定义的,尽管这不是必需的。你可以在工作空间中的任何位置自由移动每个节点。两个之间的连接线会适当地移动以保持节点之间的连接。你可以在任何时候添加/删除节点之间的连接。对于每个节点,可以选择添加一小段描述。

Outline View

工作空间视图可能无法一次向你显示整个工作流。这就是提供了轮廓视图的原因。

outline view

轮廓视图显示整个工作空间的微型视图。此视图中有一个缩放窗口,你可以将其滑动以查看 Workspace 视图中工作流的不同部分。

Node Repository

这是工作台中下一个重要的视图。节点存储库列出可用于你的分析的各种节点。整个存储库根据节点功能进行了很好的分类。你会发现如下类别 -

  1. IO

  2. Views

  3. Analytics

node repository

在每个类别下,你会发现几个选项。只需展开每个类别视图即可查看你拥有的内容。在 IO 类别下,你会找到以各种文件格式(如 ARFF、CSV、PMML、XLS 等)读取数据的节点。

node repository io

根据你的输入源数据格式,你将选择相应的节点来读取你的数据集。

到目前为止,你可能已经理解了节点的目的。节点定义了你可以在工作流中以可视方式包含的特定功能。

Analytics 节点定义了各种机器学习算法,例如贝叶斯、聚类、决策树、集成学习等等。

node repository analytics

这些不同的 ML 算法的实现都在这些节点中提供。要在你的分析中应用任何算法,只需从存储库中选取所需的节点并将其添加到你的工作空间即可。将 Data reader 节点的输出连接到此 ML 节点的输入,然后你的工作流就创建好了。

我们建议您浏览存储库中提供/可用的各种节点。

KNIME Explorer

工作台中下一个重要的视图是 Explorer 视图,如下面的截图所示 −

explorer

前两个类别列出了在 KNIME 服务器上定义的工作空间。第三个选项 LOCAL 用于存储您在本地计算机上创建的所有工作空间。尝试展开这些选项卡以查看各种预定义的工作空间。特别是展开 EXAMPLES 选项卡。

knime explorer

KNIME 提供了多个示例,可帮助您入门该平台。在下一章中,您将使用其中一个示例来熟悉该平台。

Console View

顾名思义, Console 视图在执行工作流时提供了各种控制台消息的视图。

console view

Console 视图有助于诊断工作流和检查分析结果。

Description View

我们立即需要关心的最后一个重要视图是 Description 视图。此视图提供了工作空间中所选项目的描述。典型的视图如下图所示 −

description view

上图显示了 File Reader 节点的描述。当您选择工作空间中的 File Reader 节点时,您将在该视图中看到其描述。单击任何其他节点将显示所选节点的描述。因此,在学习的初始阶段,当您不确切了解工作空间中各个节点的目的和/或节点存储库时,此视图非常有用。

Toolbar

除了上述视图外,工作台还有其他视图,如工具栏。工具栏包含各种图标,可以快速执行操作。这些图标会根据上下文启用/禁用。您可以将鼠标悬停在图标上,以查看每个图标执行的操作。以下屏幕显示了 Configure 图标执行的操作。

toolbar

Enabling/Disabling Views

到目前为止,您看到的各种视图可以轻松打开/关闭。单击视图中的关闭图标,将 close 该视图。要恢复视图,请转到 View 菜单选项并选择所需视图。选定的视图将添加到工作台。

enabling disabling views

现在,当您熟悉工作台后,我将向您展示如何运行工作流并研究它执行的分析。

KNIME - Running Your First Workflow

KNIME 提供了几个良好的工作流程,以方便学习。在本节中,我们将选择安装中提供的其中一个工作流程,以解释分析平台的各种功能和强大功能。在我们的研究中,我们将使用基于 Decision Tree 的简单分类器。

Loading Decision Tree Classifier

在 KNIME 浏览器中找到以下工作流程 −

LOCAL / Example Workflows / Basic Examples / Building a Simple Classifier

您也可以在下面的屏幕截图中进行快速参考 −

tree classifier

双击选定的项目以打开工作流。观察工作区视图。您将看到包含多个节点的工作流。此工作流程的目的是从 UCI 机器学习存储库中获取的成人数据集的民主属性中预测收入组。此机器学习模型的任务是将特定区域中收入高于或低于 5 万美元的人归类。

Workspace 视图及其实例如下图所示 −

workspace

注意从 Nodes 存储库中选取的几个节点,并通过箭头连接到工作流中。连接表示一个节点的输出馈送到下一个节点的输入中。在我们了解工作流中每个节点的功能之前,让我们首先执行整个工作流。

Executing Workflow

在了解工作流程的执行之前,了解每个节点的状态报告非常重要。检查工作流中的任何节点。在每个节点的底部,您会找到一个包含三个圆圈的状态指示器。决策树学习器节点如下图所示 −

workflow decision

状态指示器为红色,表示此节点到目前为止尚未执行。在执行期间,黄色的中心圆圈将亮起。在执行成功后,最后一个圆圈变为绿色。还有更多指标可以让您在出现错误的情况下获取状态信息。当处理中出现错误时,您将了解这些指标。

请注意,当前所有节点上的指示器均显示为红色,表示到目前为止还没有任何节点执行。要运行所有节点,请单击以下菜单项:

Node → Execute All
execution workflow

过一会儿,你会发现每个节点状态指示器现已变为绿色,表示没有错误。

在下一章中,我们将探讨工作流中各个节点的功能。

KNIME - Exploring Workflow

如果你查看工作流中的节点,你会发现它包含以下内容:

  1. 文件读取器,

  2. 颜色管理器

  3. 分区

  4. 决策树学习器

  5. 决策树预测器

  6. 得分

  7. 交互式表

  8. 散点图

  9. 统计信息

这些很容易在 Outline 视图中看到,如下所示:

outline

每个节点在工作流中提供特定功能。现在,我们将研究如何配置这些节点以满足所需功能。请注意,我们将仅讨论与我们在当前探索工作流上下文中相关的节点。

File Reader

文件读取器节点在下图中显示:

file reader

窗口顶部有一些由工作流创建者提供的说明。它告诉这个节点读取成人数据集。文件名称为 adult.csv ,从节点符号下的说明中可以看到。 File Reader 有两个输出 - 一个转到 Color Manager 节点,另一个转到 Statistics 节点。

如果你右键单击 File Manager ,将弹出一个菜单,如下所示:

file manager

Configure 菜单选项允许节点配置。 Execute 菜单运行节点。请注意,如果节点已经运行并且处于绿色状态,则此菜单将被禁用。此外,还请注意 Edit Note Description 菜单选项的存在。这允许你为你的节点编写说明。

现在,选择 Configure 菜单选项,它将显示一个包含 adult.csv 文件数据并如图所示的屏幕截图 −

adult csv file

当执行此节点时,数据将加载到内存中。整个数据加载程序代码都对用户隐藏。你现在可以欣赏这些节点的有用性——无需编码。

我们的下一个节点是 Color Manager

Color Manager

选择 Color Manager 节点,并通过右键单击进入其配置。将显示颜色设置对话框。从下拉列表中选择 income 列。

你的屏幕将类似于下面 −

color manager

请注意是否存在两个约束。如果收入低于 50K,则数据点将获得绿色,如果收入较高,则将其变为红色。当我们在本章后面查看散点图时,你将看到数据点映射。

Partitioning

在机器学习中,我们通常将所有可用数据分成两部分。较大的一部分用于训练模型,而较小的一部分用于测试。有不同的策略用于对数据进行分区。

要定义所需的划分,请右键单击 Partitioning 节点并选择 Configure 选项。你将看到以下屏幕 −

partitioning

在这种情况下,系统建模器使用了 Relative (%) 模式,并且数据以 80:20 的比例进行分割。在进行分割时,将随机拾取数据点。这确保你的测试数据不会有偏差。对于线性采样,剩余的 20% 用于测试的数据可能无法正确表示训练数据,因为它在收集过程中可能完全偏向。

如果你确定在数据收集期间确保了随机性,那么你可以选择线性采样。一旦数据准备好用于训练模型,请输入下一个节点,即 Decision Tree Learner

Decision Tree Learner

顾名思义, Decision Tree Learner 节点使用训练数据并构建模型。查看此节点的配置设置,如下图所示 −

decision tree learner

正如你所看到的, Classincome 。因此,树将基于收入列构建,而这是我们在此模型中要达到的目标。我们需要将收入高于或低于 50K 的人分离。

此节点成功运行后,你的模型将准备好进行测试。

Decision Tree Predictor

决策树预测器节点将开发的模型应用于测试数据集并附加模型预测。

tree predictor

预测器的输出馈送到两个不同的节点 - ScorerScatter Plot 。接下来,我们将检查预测的输出。

Scorer

此节点生成 confusion matrix 。要查看它,请右键单击该节点。你将看到以下弹出菜单 −

scorer

单击 View: Confusion Matrix 菜单选项,矩阵将如图所示在单独的窗口中弹出 −

confusion matrix

它表示我们开发的模型的准确性为 83.71%。如果你对此不满意,你可以尝试使用其他参数进行模型构建,特别是,你可能想要重新查看并清理你的数据。

Scatter Plot

要查看数据分布的散点图,请右键单击 Scatter Plot 节点并选择菜单选项 Interactive View: Scatter Plot 。你将看到以下绘图 −

scatter plot

该图给出了基于 50K 阈值的两种不同颜色的点(红色和蓝色)的不同收入人群的分布。这些是我们 Color Manager 节点中设置的颜色。分布相对于在 x 轴上绘制的年龄。你可以通过更改节点的配置为 x 轴选择不同的特征。

配置对话框显示在这里,我们在其中选择 marital-status 作为 x 轴的特征。

marital status

这完成了我们对 KNIME 提供的预定义模型的讨论。我们建议你在模型中学习其他两个节点(统计和交互式表格)。

现在让我们继续本教程中最重要的部分——创建你自己的模型。

KNIME - Building Your Own Model

在本教程中,您将基于一些观察到的特征构建自己的机器学习模型以对植物进行分类。为此,我们将使用 UCI Machine Learning Repository 的众所周知的 iris 数据集。该数据集包含三个不同的植物类别。我们将训练我们的模型以将未知植物分类为这三个类别之一。

我们将从在 KNIME 中创建一个新工作流开始,用于创建机器学习模型。

Creating Workflow

要在 KNIME 工作台中创建一个新工作流,选择以下菜单选项。

File → New

您将看到以下屏幕:

creating workflow

选择 New KNIME Workflow 选项,然后单击 Next 按钮。在下一个屏幕上,系统会要求您输入工作流的所需名称和保存它的目标文件夹。根据需要输入此信息,然后单击 Finish 以创建一个新的工作区。

将带给定名称的新工作空间添加到 Workspace 视图中,如下所示 −

creating 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 节点。这在下图中可见 −

adding file reader

选择 File Reader 并双击,将节点添加到工作空间。或者,你可以使用拖放功能将节点添加到工作空间。添加节点后,你将需要对其进行配置。右键单击节点并选择 Configure 菜单选项。你已经在前面的课程中这么做过。

在加载数据文件后,设置屏幕如下所示。

adding datafile

要加载数据集,请单击 Browse 按钮并选择 iris.data 文件的位置。节点将加载文件内容,这些内容显示在配置框的下部分中。一旦你确认数据文件已正确定位并加载,请单击 OK 按钮以关闭配置对话框。

现在你将向此节点添加一些注释。右键单击节点并选择 New Workflow Annotation 菜单选项。屏幕上将出现一个注释框,如下图所示:

workflow annotation

单击该框内并添加以下注释 −

Reads iris.data

单击该框外的任意位置以退出编辑模式。根据需要调整大小并将框放置在节点周围。最后,双击节点下方的 Node 1 文本来将此字符串更改为以下内容 −

Loads data

此时,屏幕将如下所示 −

iris data

现在我们将添加一个新节点,将加载的数据集分区为训练和测试。

Adding Partitioning Node

Node Repository 搜索窗口中,键入几个字符以找到 Partitioning 节点,如下面的屏幕截图所示 −

locate partitioning

将节点添加到我们的工作空间。将配置设置为以下内容 −

Relative (%) : 95
Draw Randomly

以下屏幕截图显示了配置参数。

configuration parameters

接下来,在两个节点之间建立连接。为此,请单击 File Reader 节点的输出,保持鼠标按钮单击,将出现一根橡皮筋线,将其拖动到 Partitioning 节点的输入,松开鼠标按钮。现在就在两个节点之间建立了连接。

添加注释,更改说明,按需要放置节点和注释视图。此时您的屏幕应如下 -

file reader partitioning

接下来,我们将添加 k-Means 节点。

Adding k-Means Node

从资源库中选择 k-Means 节点并将其添加到工作区。如果您想要复习有关 k-Means 算法的知识,只需在工作台的说明视图中查找其说明即可。这在下面的屏幕截图中有所展示 -

k means

顺便提一下,在最后决定使用哪种算法之前,您可以在说明窗口中查找不同算法的说明。

打开节点的配置对话框。我们将使用以下所示字段的所有默认值 -

configuration dialog

单击 OK 接受默认值并关闭对话框。

将注释和说明设为以下内容 -

  1. Annotation: Classify clusters

  2. Description:Perform clustering

Partitioning 节点的顶部输出连接到 k-Means 节点的输入。重新定位您的项目,您的屏幕应如下 -

partitioning node

接下来,我们将添加一个 Cluster Assigner 节点。

Adding Cluster Assigner

Cluster Assigner 为现有原型集分配新数据。它需要两个输入 - 原型模型和包含输入数据的资料表。在说明窗口中查找节点的说明,该说明在下方的屏幕截图中有所描述 -

adding cluster assigner

因此,对于此节点,您必须建立两个连接 -

  1. Partitioning 节点的 PMML 集群模型输出 → Cluster Assigner 的原型输入

  2. Partitioning 节点的第二个分区输出 → Cluster Assigner 的输入数据

这两个连接在下方的屏幕截图中有所展示 -

cluster assigner

Cluster Assigner 不需要任何特殊配置。只需接受默认值即可。

现在,向此节点添加一些注释和说明。重新排列您的节点。您的屏幕应如下 -

shape manager

至此,我们的集群完成。我们需要以图表方式可视化输出。为此,我们将添加一个散点图。我们将在散点图中为三个类别分别设置颜色和形状。因此,我们首先将 k-Means 节点的输出通过 Color Manager 节点再通过 Shape Manager 节点进行过滤。

Adding Color Manager

在资源库中查找 Color Manager 节点。将其添加到工作区。保留其默认配置。请注意,您必须打开配置对话框并点按 OK 才能接受默认值。为节点设置说明文本。

k-Means 的输出到 Color Manager 的输入建立一个连接。此时您的屏幕应如下 -

color manager screen

Adding Shape Manager

在存储库中找到 Shape Manager 并将其添加到工作区。将其配置保留为默认值。与前一个类似,您必须打开配置对话框并点击 OK 以设置默认值。从 Color Manager 的输出到 Shape Manager 的输入建立连接。设置该节点的描述。

您的屏幕应如下所示 −

adding shape manager

现在,您将添加此模型中的最后一个节点:散点图。

Adding Scatter Plot

在存储库中找到“散点图”节点并将其添加到工作区。将 Shape Manager 的输出连接到 Scatter Plot 的输入。将配置保留为默认值。设置描述。

最后,向最近添加的三个节点添加一个组注释

注释:可视化

根据需要重新定位这些节点。在这一阶段,您的屏幕应如下所示。

annotation visualization

这完成了模型构建任务。

KNIME - Testing the Model

要测试模型,请执行以下菜单选项: NodeExecute All

如果一切都正确,每个节点底部的状态信号将变为绿色。如果没有,你需要查找 Console 视图中的错误,修复它们并重新运行工作流。

现在,你可以准备可视化模型的预测输出。为此,右键单击 Scatter Plot 节点并选择以下菜单选项: Interactive View: Scatter Plot

这在下面的屏幕截图中显示 -

interactive view

你将在屏幕上看到如下图所示的散点图 -

scatter plot screen

你可以通过改变 x 轴和 y 轴来运行不同的可视化。若要执行此操作,请单击散点图右上角的设置菜单。将出现一个弹出菜单,如下面的屏幕截图所示 -

visualizations changing

你可以在此屏幕上设置图表的各种参数,以便从多个方面可视化数据。

这完成了我们的模型构建任务。

KNIME - Summary and Future Work

KNIME 提供了一个用于构建机器学习模型的图形化工具。在本教程中,您将学习如何在您的计算机上下载并安装 KNIME。

Summary

您学习了 KNIME 工作台中提供的各种视图。KNIME 提供了多个预定义的工作流供您学习。我们使用其中一个工作流来了解 KNIME 的功能。KNIME 提供了多个预先编程的节点,用于读取各种格式的数据、使用多个 ML 算法分析数据,并最终以多种不同的方式将数据可视化。到教程的末尾,您从头开始创建了自己的模型。我们使用众所周知的 iris 数据集,使用 k 均值算法对植物进行分类。

您现在已准备好使用这些技术进行您自己的分析。

Future Work

如果您是开发人员,并且想要在您的编程应用程序中使用 KNIME 组件,您会很高兴得知 KNIME 本机集成了广泛的编程语言,例如 Java、R、Python 和许多其他语言。