Weka - 快速指南


威卡 - 简介

任何机器学习应用程序的基础都是数据——不仅仅是少量数据,而是大量数据,在当前术语中被称为大数据。

要训​​练机器分析大数据,您需要对数据有几个考虑因素 -

  • 数据必须干净。
  • 它不应包含空值。

此外,并非数据表中的所有列都对您想要实现的分析类型有用。在将数据输入机器学习算法之前,必须删除机器学习术语中的不相关数据列或“特征”。

简而言之,您的大数据需要进行大量预处理才能用于机器学习。数据准备好后,您将应用各种机器学习算法(例如分类、回归、聚类等)来解决最终的问题。

您应用的算法类型很大程度上取决于您的领域知识。即使在同一类型(例如分类)中,也有多种可用的算法。您可能想在同一类下测试不同的算法,以构建高效的机器学习模型。这样做时,您更喜欢对处理后的数据进行可视化,因此您还需要可视化工具。

在接下来的章节中,您将了解 Weka,这是一款可以轻松完成上述所有任务并让您轻松处理大数据的软件。

维卡是什么?

WEKA - 一款开源软件,提供数据预处理工具、多种机器学习算法的实现以及可视化工具,以便您可以开发机器学习技术并将其应用于现实世界的数据挖掘问题。下图总结了 WEKA 提供的功能 -

威卡总结

如果您观察图像流的开始,您就会明白处理大数据有很多阶段,以使其适合机器学习 -

首先,您将从现场收集的原始数据开始。该数据可能包含多个空值和不相关的字段。您可以使用 WEKA 中提供的数据预处理工具来清理数据。

然后,您可以将预处理后的数据保存在本地存储中以应用机器学习算法。

接下来,根据您尝试开发的 ML 模型的类型,您可以选择选项之一,例如Classify、ClusterAssociate。属性选择允许自动选择特征以创建简化的数据集。

请注意,在每个类别下,WEKA 都提供了多种算法的实现。您可以选择一种算法,设置所需的参数并在数据集上运行它。

然后,WEKA 将为您提供模型处理的统计输出。它为您提供了一个可视化工具来检查数据。

不同的模型可以应用于同一数据集。然后,您可以比较不同模型的输出,并选择最适合您的目的的模型。

因此,总体而言,使用 WEKA 可以加快机器学习模型的开发速度。

现在我们已经了解了 WEKA 是什么及其用途,在下一章中让我们学习如何在本地计算机上安装 WEKA。

Weka - 安装

要在您的计算机上安装 WEKA,请访问WEKA 官方网站并下载安装文件。WEKA 支持在 Windows、Mac OS X 和 Linux 上安装。您只需按照本页上的说明即可为您的操作系统安装 WEKA。

在 Mac 上安装的步骤如下 -

  • 下载 Mac 安装文件。
  • 双击下载的weka-3-8-3-corretto-jvm.dmg 文件

安装成功后您将看到以下屏幕。

威卡安装
  • 单击weak-3-8-3-corretto-jvm图标启动Weka。
  • 您也可以选择从命令行启动它 -
java -jar weka.jar

WEKA GUI Chooser 应用程序将启动,您将看到以下屏幕 -

威卡应用

GUI 选择器应用程序允许您运行此处列出的五种不同类型的应用程序 -

  • 探险家
  • 实验者
  • 知识流
  • 工作台
  • 简单的命令行界面

我们将在本教程中使用资源管理器

Weka - 启动资源管理器

在本章中,让我们研究一下浏览器为处理大数据而提供的各种功能。

当您单击应用程序选择器中的资源管理器按钮时,它将打开以下屏幕 -

资源管理器按钮

在顶部,您将看到此处列出的几个选项卡 -

  • 预处理
  • 分类
  • 联系
  • 选择属性
  • 可视化

在这些选项卡下,有几种预先实现的机器学习算法。现在让我们详细研究一下它们。

预处理选项卡

最初,当您打开资源管理器时,仅启用“预处理”选项卡。机器学习的第一步是预处理数据。因此,在“预处理”选项中,您将选择数据文件,对其进行处理并使其适合应用各种机器学习算法。

分类选项卡

“分类”选项卡为您提供了多种用于数据分类的机器学习算法。举几个例子,您可以应用线性回归、逻辑回归、支持向量机、决策树、随机树、随机森林、NaiveBayes 等算法。该列表非常详尽,并提供有监督和无监督的机器学习算法。

集群选项卡

Cluster选项卡下,提供了多种聚类算法 - 例如 SimpleKMeans、FilteredClusterer、HierarchicalClusterer 等。

关联选项卡

Associate选项卡下,您将找到 Apriori、FilteredAssociator 和 FPGrowth。

选择属性选项卡

选择属性允许您基于多种算法(例如 ClassifierSubsetEval、PrincipalComponents 等)进行功能选择。

可视化选项卡

最后,“可视化”选项允许您可视化处理后的数据以进行分析。

正如您所注意到的,WEKA 提供了几种即用型算法来测试和构建机器学习应用程序。要有效地使用 WEKA,您必须充分了解这些算法、它们的工作原理、在什么情况下选择哪一种算法、在处理后的输出中查找什么内容等等。简而言之,您必须在机器学习方面拥有坚实的基础,才能有效地使用 WEKA 构建应用程序。

在接下来的章节中,您将深入研究资源管理器中的每个选项卡。

Weka - 加载数据

在本章中,我们从用于预处理数据的第一个选项卡开始。这对于您将应用于数据以构建模型的所有算法都是通用的,并且是 WEKA 中所有后续操作的通用步骤。

为了让机器学习算法提供可接受的准确性,必须首先清理数据,这一点很重要。这是因为从字段收集的原始数据可能包含空值、不相关的列等。

在本章中,您将学习如何预处理原始数据并创建干净、有意义的数据集以供进一步使用。

首先,您将学习将数据文件加载到 WEKA 浏览器中。数据可以从以下来源加载 -

  • 本地文件系统
  • 网络
  • 数据库

在本章中,我们将详细了解加载数据的所有三个选项。

从本地文件系统加载数据

在您在上一课中学习的机器学习选项卡下,您会发现以下三个按钮 -

  • 打开文件 …
  • 打开网址...
  • 打开数据库...

单击“打开文件...”按钮。目录导航器窗口打开,如下图所示 -

本地文件系统

现在,导航到存储数据文件的文件夹。WEKA 安装附带了许多示例数据库供您进行实验。这些可以在WEKA 安装的数据文件夹中找到。

出于学习目的,请从此文件夹中选择任何数据文件。文件的内容将被加载到 WEKA 环境中。我们很快就会学习如何检查和处理这些加载的数据。在此之前,让我们看看如何从 Web 加载数据文件。

从网络加载数据

单击“打开 URL...”按钮后,您可以看到一个窗口,如下所示 -

从网络加载数据

我们将从公共 URL 打开文件 在弹出框中输入以下 URL -

https://storm.cis.fordham.edu/~gweiss/data-mining/weka-data/weather.nominal.arff

您可以指定存储您的数据的任何其他 URL。资源管理器会将数据从远程站点加载到其环境中。

从数据库加载数据

单击“打开数据库...”按钮后,您可以看到一个窗口,如下所示 -

从数据库加载数据

设置数据库的连接字符串,设置数据选择查询,处理查询并在 WEKA 中加载所选记录。

Weka - 文件格式

WEKA 支持多种数据文件格式。这是完整的列表 -

  • 阿尔夫
  • arff.gz
  • 英国标准协会
  • 数据集
  • 数据
  • 数据
  • json
  • json.gz
  • 库支持虚拟机
  • 名字
  • 辐射源
  • xrff.gz

屏幕底部的下拉列表框中列出了它支持的文件类型。这如下面的屏幕截图所示。

下拉列表

您会注意到它支持多种格式,包括 CSV 和 JSON。默认文件类型是 Arff。

阿尔夫格式

Arff文件包含两个部分 - 标头和数据。

  • 标头描述了属性类型。
  • 数据部分包含逗号分隔的数据列表。

作为 Arff 格式的示例,从 WEKA 示例数据库加载的天气数据文件如下所示 -

示例数据库

从屏幕截图中,您可以推断出以下几点 -

  • @relation 标签定义数据库的名称。

  • @attribute 标签定义属性。

  • @data 标记启动数据行列表,每个数据行包含逗号分隔的字段。

  • 这些属性可以采用名义值,就像此处所示的 Outlook 的情况一样 -

@attribute Outlook(晴天、阴天、雨天)
  • 属性可以采用实际值,如本例所示 -

@属性温度实数
  • 您还可以设置一个名为 play 的目标或类变量,如下所示 -

@属性播放(是,否)
  • 目标假定两个标称值是或否。

其他格式

资源管理器可以加载前面提到的任何格式的数据。由于 arff 是 WEKA 中的首选格式,因此您可以从任何格式加载数据并将其保存为 arff 格式以供以后使用。数据预处理后,只需将其保存为arff格式以供进一步分析。

现在您已经学习了如何将数据加载到 WEKA 中,在下一章中,您将学习如何预处理数据。

Weka - 数据预处理

从现场收集的数据包含许多不需要的东西,会导致错误的分析。例如,数据可能包含空字段,可能包含与当前分析无关的列,等等。因此,必须对数据进行预处理以满足您正在寻求的分析类型的要求。这是在预处理模块中完成的。

为了演示预处理中的可用功能,我们将使用安装中提供的天气数据库。

使用预处理标签下的打开文件...选项选择weather-nominal.arff文件。

名义天气

当您打开文件时,您的屏幕如下所示 -

韦卡探索

该屏幕告诉我们有关加载数据的一些信息,本章将进一步讨论这些信息。

了解数据

让我们首先看一下突出显示的当前关系子窗口。它显示当前加载的数据库的名称。您可以从这个子窗口推断出两点 -

  • 有 14 个实例 - 表中的行数。

  • 该表包含 5 个属性 - 字段,这些属性将在接下来的部分中讨论。

请注意左侧的“属性”子窗口,其中显示数据库中的各个字段。

Weka 属性

天气数据库包含五个字段 - 展望、温度湿度、刮风和玩耍。当您通过单击从此列表中选择一个属性时,该属性本身的更多详细信息将显示在右侧。

让我们首先选择温度属性。当您点击它时,您将看到以下屏幕 -

温度属性

“选定属性”子窗口中,您可以观察到以下内容 -

  • 显示属性的名称和类型。

  • 温度属性的类型是Nominal

  • 缺失值的数量为零。

  • 存在三个不同的值,没有唯一的值。

  • 该信息下面的表格显示了该字段的标称值(热、温和和冷)。

  • 它还以每个标称值的百分比形式显示数量和重量。

在窗口底部,您可以看到值的直观表示。

如果单击“全部可视化”按钮,您将能够在一个窗口中看到所有功能,如下所示 -

可视化全部

删除属性

很多时候,您想要用于模型构建的数据带有许多不相关的字段。例如,客户数据库可能包含与分析他的信用评级相关的他的手机号码。

删除属性

要删除属性,请选择它们并单击底部的“删除”按钮。

选定的属性将从数据库中删除。完全预处理数据后,您可以将其保存以用于模型构建。

接下来,您将学习通过对数据应用过滤器来预处理数据。

应用过滤器

一些机器学习技术(例如关联规则挖掘)需要分类数据。为了说明过滤器的使用,我们将使用包含两个数字属性 -温度湿度的 Weather-numeric.arff数据库。

我们将通过对原始数据应用过滤器将它们转换为名义值。单击“过滤器”子窗口中的“选择”按钮,然后选择以下过滤器 -

weka→过滤器→监督→属性→离散化

Weka离散化

单击“应用”按钮并检查温度和/或湿度属性。您会注意到这些已从数字类型更改为名义类型。

湿度属性

现在让我们看看另一个过滤器。假设您想要选择最佳属性来决定比赛。选择并应用以下过滤器 -

weka→过滤器→监督→属性→属性选择

您会注意到它从数据库中删除了温度和湿度属性。

Weka属性选择

对数据预处理感到满意后,单击“保存...”按钮保存数据。您将使用此保存的文件来构建模型。

在下一章中,我们将探索使用几种预定义的机器学习算法构建模型。

Weka - 分类器

许多机器学习应用程序都与分类相关。例如,您可能想将肿瘤分类为恶性或良性。您可以根据天气情况决定是否进行户外游戏。一般来说,这个决定取决于天气的几个特征/条件。因此,您可能更喜欢使用树分类器来决定是否玩。

在本章中,我们将学习如何根据天气数据构建这样的树分类器来决定比赛条件。

设置测试数据

我们将使用上一课中预处理的天气数据文件。使用“预处理”选项卡下的“打开文件...”选项打开保存的文件,单击“分类”选项卡,您将看到以下屏幕 -

分类选项卡

在了解可用的分类器之前,让我们先检查一下测试选项。您会注意到下面列出的四个测试选项 -

  • 训练集
  • 提供测试套件
  • 交叉验证
  • 百分比分割

除非您有自己的训练集或客户提供的测试集,否则您将使用交叉验证或百分比分割选项。在交叉验证下,您可以设置在每次训练迭代期间分割和使用整个数据的折叠数。在百分比分割中,您将使用设置的分割百分比在训练和测试之间分割数据。

现在,保留输出类的默认播放选项 -

播放选项

接下来,您将选择分类器。

选择分类器

单击“选择”按钮并选择以下分类器 -

weka→分类器>树>J48

这如下面的屏幕截图所示 -

维卡树

单击“开始”按钮开始分类过程。一段时间后,分类结果将显示在您的屏幕上,如下所示 -

开始按钮

让我们检查屏幕右侧显示的输出。

它说树的大小是 6。您很快就会看到树的视觉表示。在摘要中,它表示正确分类的实例为 2,错误分类的实例为 3,还表示相对绝对误差为 110%。它还显示了混淆矩阵。对这些结果的分析超出了本教程的范围。但是,您可以从这些结果中轻松看出分类是不可接受的,您将需要更多数据进行分析、改进特征选择、重建模型等,直到您对模型的准确性感到满意为止。无论如何,这就是 WEKA 的意义所在。它可以让您快速测试您的想法。

可视化结果

要查看结果的直观表示,请右键单击“结果”列表框中的结果。屏幕上会弹出几个选项,如下所示 -

结果列表

选择可视化树以获得遍历树的可视化表示,如下面的屏幕截图所示 -

可视化树

选择可视化分类器错误将绘制分类结果,如下所示 -

分类器错误

十字代表正确分类的实例,而正方形代表错误分类的实例。在图的左下角,您会看到一个十字,表示前景是否晴朗,然后游戏。所以这是一个正确分类的实例。要定位实例,您可以通过滑动抖动滑动条在其中引入一些抖动。

当前的Plotly是前景游戏。这些由屏幕顶部的两个下拉列表框指示。

展望与游戏

现在,在每个框中尝试不同的选择,并注意 X 和 Y 轴如何变化。通过使用图右侧的水平条可以实现相同的效果。每个条代表一个属性。左键单击条带可在 X 轴上设置所选属性,而右键单击可在 Y 轴上设置所选属性。

还提供了其他几个图供您进行更深入的分析。明智地使用它们来微调您的模型。下面显示了这样一个成本/效益分析图,供您快速参考。

成本效益分析

解释这些图表中的分析超出了本教程的范围。鼓励读者温习机器学习算法分析知识。

在下一章中,我们将学习下一组机器学习算法,即聚类。

Weka - 聚类

聚类算法在整个数据集中查找相似实例的组。WEKA支持多种聚类算法,例如EM、FilteredClusterer、HierarchicalClusterer、SimpleKMeans等。您应该完全理解这些算法才能充分利用 WEKA 功能。

与分类的情况一样,WEKA 允许您以图形方式可视化检测到的簇。为了演示集群,我们将使用提供的 iris 数据库。该数据集包含三类,每类 50 个实例。每个类别指的是一种鸢尾植物。

加载数据中

在 WEKA 资源管理器中选择“预处理”选项卡。单击“打开文件...”选项,然后在文件选择对话框中选择iris.arff文件。当您加载数据时,屏幕如下所示 -

屏幕外观

您可以观察到有 150 个实例和 5 个属性。属性名称列为sepallengthsepalwidthpetallengthpetalwidthclass。前四个属性是数字类型,而类是具有 3 个不同值的名义类型。检查每个属性以了解数据库的功能。我们不会对这些数据进行任何预处理,而是直接进行模型构建。

聚类

单击“聚类”选项卡将聚类算法应用于加载的数据。单击选择按钮。您将看到以下屏幕 -

集群选项卡

现在,选择EM作为聚类算法。在“集群”模式子窗口中,选择“类到集群评估”选项,如下面的屏幕截图所示 -

聚类算法

单击“开始”按钮处理数据。过了一会儿,结果就会显示在屏幕上。

接下来,让我们研究一下结果。

检查输出

数据处理的输出显示在下面的屏幕中 -

检查输出

从输出屏幕中,您可以观察到 -

  • 数据库中检测到 5 个集群实例。

  • 0代表 setosa,簇 1代表 virginica,簇 2代表 versicolor,而最后两个簇没有任何与之关联的类。

如果向上滚动输出窗口,您还会看到一些统计数据,其中给出了各个检测到的集群中每个属性的平均值和标准差。这显示在下面的屏幕截图中 -

检测到的簇

接下来,我们将看看集群的视觉表示。

可视化集群

要可视化集群,请右键单击“结果”列表中的EM结果。您将看到以下选项 -

聚类结果列表

选择可视化聚类分配。您将看到以下输出 -

集群分配

与分类的情况一样,您会注意到正确识别的实例和错误识别的实例之间的区别。您可以通过更改 X 轴和 Y 轴来分析结果。您可以像分类一样使用抖动来找出正确识别的实例的集中度。可视化图中的操作与您在分类情况中学习的操作类似。

应用分层聚类器

为了展示 WEKA 的强大功能,现在让我们研究另一种聚类算法的应用。在 WEKA 资源管理器中,选择HierarchicalClusterer作为您的 ML 算法,如下面的屏幕截图所示 -

层次聚类器

“集群模式”选择为“要集群评估的类”,然后单击“开始”按钮。您将看到以下输出 -

聚类评价

请注意,在结果列表中,列出了两个结果:第一个是 EM 结果,第二个是当前的分层结果。同样,您可以将多种机器学习算法应用于同一数据集并快速比较它们的结果。

如果您检查该算法生成的树,您将看到以下输出 -

检查算法

在下一章中,您将学习关联类型的 ML 算法。

Weka - 协会

据观察,购买啤酒的人同时也购买了尿布。也就是说,一起购买啤酒和尿布存在关联。虽然这看起来不太令人信服,但这条关联规则是从超市的庞大数据库中挖掘出来的。同样,花生酱和面包之间也可能存在关联。

找到这样的关联对于超市来说至关重要,因为他们会将尿布放在啤酒旁边,以便顾客可以轻松找到这两种物品,从而增加超市的销售额。

Apriori算法就是机器学习中的一种算法,它可以找出可能的关联并创建关联规则。WEKA 提供了 Apriori 算法的实现。您可以在计算这些规则时定义最小支持度和可接受的置信度。您将对WEKA 安装中提供的超市数据应用Apriori算法。

加载数据中

在 WEKA 资源管理器中,打开“预处理”选项卡,单击“打开文件...”按钮,然后从安装文件夹中选择Supermarket.arff数据库。数据加载后,您将看到以下屏幕 -

加载数据中

该数据库包含 4627 个实例和 217 个属性。您可以很容易地理解检测如此大量的属性之间的关联是多么困难。幸运的是,这个任务在 Apriori 算法的帮助下是自动化的。

助理

单击“关联”选项卡,然后单击“选择”按钮。选择Apriori关联,如屏幕截图所示 -

关联选项卡

要设置 Apriori 算法的参数,请单击其名称,将弹出一个窗口,如下所示,允许您设置参数 -

先验算法

设置完参数后,单击“开始”按钮。一段时间后,您将看到结果,如下面的屏幕截图所示 -

启动参数

在底部,您将找到检测到的最佳关联规则。这将有助于超市将产品存放在适当的货架上。

Weka - 特征选择

当数据库包含大量属性时,将有几个属性在您当前正在寻求的分析中变得不重要。因此,从数据集中删除不需要的属性成为开发良好的机器学习模型的一项重要任务。

您可以直观地检查整个数据集并决定不相关的属性。对于包含大量属性的数据库(例如您在前面的课程中看到的超市案例)来说,这可能是一项艰巨的任务。幸运的是,WEKA 提供了一个用于特征选择的自动化工具。

本章在包含大量属性的数据库上演示了此功能。

加载数据中

在WEKA 资源管理器的Preprocess标签中,选择Labor.arff文件以加载到系统中。当您加载数据时,您将看到以下屏幕 -

加载数据中

请注意,有 17 个属性。我们的任务是通过消除一些与我们的分析无关的属性来创建简化的数据集。

特征提取

单击“选择属性”选项卡。您将看到以下屏幕 -

选择属性

属性评估器搜索方法下,您将找到几个选项。我们在这里只使用默认值。在属性选择模式中,使用完整训练集选项。

单击“开始”按钮处理数据集。您将看到以下输出 -

启动数据集

在结果窗口的底部,您将获得选定属性的列表。要获取直观表示,请右键单击结果列表中的结果。

输出如下图所示 -

截图输出

单击任何方块都会为您提供数据图以供进一步分析。典型的数据图如下所示 -

数据图

这与我们在前面章节中看到的类似。尝试使用不同的选项来分析结果。

下一步是什么?

到目前为止,您已经看到了 WEKA 在快速开发机器学习模型方面的强大功能。我们使用的是一个名为Explorer 的图形工具来开发这些模型。WEKA 还提供了一个命令行界面,它为您提供了比资源管理器中提供的更多功能。

单击GUI Chooser应用程序中的Simple CLI按钮将启动此命令行界面,如下面的屏幕截图所示 -

Gui选择器

在底部的输入框中输入命令。您将能够完成迄今为止在资源管理器中完成的所有操作以及更多操作。有关更多详细信息,请参阅 WEKA文档(https://www.cs.waikato.ac.nz/ml/weka/documentation.html)。

最后,WEKA 是用 Java 开发的,并为其 API 提供了接口。因此,如果您是一名 Java 开发人员并热衷于在自己的 Java 项目中包含 WEKA ML 实现,那么您可以轻松做到这一点。

结论

WEKA 是开发机器学习模型的强大工具。它提供了几种最广泛使用的机器学习算法的实现。在将这些算法应用于您的数据集之前,它还允许您对数据进行预处理。支持的算法类型分为“分类”、“聚类”、“关联”和“选择”属性。处理各个阶段的结果可以通过美丽而强大的视觉表示来可视化。这使得数据科学家可以更轻松地在其数据集上快速应用各种机器学习技术,比较结果并创建最终使用的最佳模型。