Weka数据挖掘

2024年11月20日 | 阅读 7 分钟

Weka 包含一套可视化工具和用于数据分析及预测建模的算法,以及易于访问这些功能的图形用户界面。Weka 的原始非 Java 版本是一个 Tcl/Tk 前端,用于(主要为第三方)用其他编程语言实现的建模算法,加上 C 语言的数据预处理实用程序以及用于运行机器学习实验的 makefile 系统。

最初的版本主要被设计为一种用于分析农业领域数据的工具。然而,1997 年开发的、更新的、完全基于 Java 的版本(Weka 3)现在已被用于许多不同的应用领域,特别是在教育和研究方面。Weka 具有以下优点:

  • 根据 GNU 通用公共许可证免费提供。
  • 可移植性,因为它完全用 Java 编程语言实现,因此几乎可以在任何现代计算平台上运行。
  • 全面的数据预处理和建模技术集合。
  • 由于其图形用户界面,易于使用。

Weka 支持多种标准数据挖掘任务,特别是数据预处理、聚类、分类、回归、可视化和特征选择。Weka 的输入预计将按照属性关系文件格式进行格式化,文件名后缀为 .arff。

Weka 的所有技术都基于一个假设,即数据可作为单个扁平文件或关系获得,其中固定的属性集描述每个数据点(数值属性或标称属性,但也支持其他一些属性类型)。Weka 使用 Java 数据库连接 (JDBC) 访问 SQL 数据库,并能处理数据库查询返回的结果。Weka 通过 Deeplearning4j 提供深度学习访问。

它无法进行多关系数据挖掘。然而,有一些独立的软件可以将一组链接的数据库表转换为单个表,以供 Weka 处理。目前 Weka 分发版中未包含的另一个重要领域是序列建模。

Weka 的历史

  • 1993 年,新西兰怀卡托大学开始开发 Weka 的原始版本,该版本混合使用了 Tcl/Tk、C 和 makefiles。
  • 1997 年,决定从头开始用 Java 重写 Weka,包括实现建模算法。
  • 2005 年,Weka 获得了 SIGKDD 数据挖掘与知识发现服务奖。
  • 2006 年,Pentaho 公司获得了使用 Weka 进行商业智能的独家许可。它构成了 Pentaho 商业智能套件的数据挖掘和预测分析组件。此后,日立 Vantara 收购了 Pentaho,Weka 现在是 PMI(机器学习插件)开源组件的基础。

Weka 的特性

Weka 具有以下特性:

Weka Data Mining

1. 预处理

数据预处理是数据挖掘中的关键任务。由于大多数数据都是原始数据,可能包含空值或重复值、垃圾值、异常值、多余的列,或者命名约定不同。所有这些都会降低结果的质量。

为了使数据更干净、更好、更全面,WEKA 在 **filter** 类别下提供了一套全面的选项。在这里,该工具同时提供了监督和非监督类型的操作。以下是一些预处理操作的列表:

  • ReplaceMissingWithUserConstant:用于修复空值或 null 值问题。
  • ReservoirSample:用于生成样本数据的随机子集。
  • NominalToBinary:用于将数据从标称型转换为二进制型。
  • RemovePercentage:用于删除给定百分比的数据。
  • RemoveRange:用于删除给定范围的数据。

2. 分类

分类是机器学习中的一项基本功能,我们将类或类别分配给项目。经典的分类示例包括:将脑肿瘤声明为“恶性”或“良性”,或将电子邮件分配给“垃圾邮件”或“非垃圾邮件”类别。

选择所需的分类器后,我们为训练集选择测试选项。其中一些选项包括:

  • Use training set:分类器将在同一训练集上进行测试。
  • A supplied test set:基于单独的测试集评估分类器。
  • Cross-validation Folds:基于提供的折数的交叉验证来评估分类器。
  • Percentage split:分类器将根据给定百分比的数据进行评判。

除了这些之外,我们还可以使用更多测试选项,例如**Preserve order for % split**、**Output source code** 等。

3. 聚类

在聚类中,数据集根据某些相似性被组织成不同的组/簇。在这种情况下,同一簇内的项目是相同的,但与其他簇不同。聚类的例子包括识别具有相似行为的客户以及根据同质土地利用组织区域。

4. 关联

关联规则突出显示了数据集中项目之间的所有关联和相关性。简而言之,它是一个 **if-then** 语句,描绘了数据项之间关系的概率。关联的一个经典例子是指牛奶和面包的销售之间的联系。

该工具在此类别中为关联规则挖掘提供了 **Apriori、FilteredAssociator 和 FPGrowth 算法**。

5. 选择属性

每个数据集都包含大量属性,但其中许多可能不是非常有价值的。因此,删除不必要的并保留相关详细信息对于构建一个好的模型非常重要。

许多属性评估器和搜索方法包括 **BestFirst、GreedyStepwise** 和 **Ranker**。

6. 可视化

在可视化选项卡中,提供了不同的图表矩阵和图形来显示模型识别的趋势和错误。

Weka 的要求和安装

我们可以在 Windows、MAC OS 和 Linux 上安装 WEKA。对于最新稳定版本的 Weka,最低要求是 Java 8 或更高版本。

Weka Data Mining

如上截图所示,**Applications** 类别中有五个选项。

  • ***Explorer*** 是执行大多数数据挖掘任务的中心面板。我们将在接下来的部分中进一步探讨此面板。
  • 该工具提供了一个 ***Experimenter***。在此面板中,我们可以运行实验并设计它们。
  • WEKA 提供了 ***KnowledgeFlow*** 面板。**它提供了一个界面,通过拖放组件、连接它们形成知识流并分析数据和结果。**
  • ***Simple CLI*** 面板提供了运行 WEKA 的命令行功能。例如,要对 ***arff*** 数据使用 ***ZeroR*** 分类器,我们将在命令行中运行:

java weka.classifiers.trees.ZeroR -t iris.arff

Weka 数据类型和数据格式

数值型(整数和实数)、字符串、日期和关系型是 WEKA 提供的四种数据类型。默认情况下,WEKA 支持 ARFF 格式。ARFF(属性关系文件格式)是一种 ASCII 格式,它描述了一组实例,这些实例共享一组属性。每个 ARFF 文件包含两个部分:头部和数据。

  • **头部**部分包含属性类型,
  • 而**数据**部分包含这些属性的逗号分隔数据列表。

需要注意的是,头部(***@attribute***)和数据(***@data***)的声明不区分大小写。

让我们用天气预报数据集看一下格式

除了 ARFF,该工具还支持 **CSV、JSON** 和 **XRFF** 等不同文件格式。

在 Weka 中加载数据

WEKA 允许您从四种类型的源加载数据:

  1. 本地文件系统
  2. 公共 URL
  3. 数据库查询
  4. 生成用于运行模型的人工数据
Weka Data Mining

一旦从不同源加载了数据,下一步就是预处理数据。为此,我们可以选择任何合适的过滤器技术。所有方法都带有默认设置,可以通过单击名称进行配置。

Weka Data Mining

如果一个属性(如 ***sepallength***)中存在错误或异常值,在这种情况下,我们可以从 **Attributes** 部分中删除或更新它。

Weka 的算法类型

WEKA 为机器学习任务提供了许多算法。由于其核心性质,所有算法都分为几组。这些算法可在 WEKA 的 **Explorer** 选项卡下找到。让我们看一下这些组及其核心性质:

  • ***Bayes:*** 包含基于贝叶斯定理的算法,例如 ***Naive Bayes***
  • ***functions:*** 包含估计函数的算法,包括 ***Linear Regression***
  • ***lazy:*** 涵盖所有使用惰性学习的算法,例如 ***KStar、LWL***
  • ***meta:*** 包含使用或集成多个算法进行工作的算法,例如 ***Stacking、Bagging***
  • ***misc:*** 杂项算法,不属于任何给定类别
  • ***rules:*** 结合使用规则的算法,例如 ***OneR、ZeroR***
  • ***trees:*** 包含使用决策树的算法,例如 ***J48、RandomForest***

**每个算法都有配置参数,例如** ***batchSize、debug*** **等。有些配置参数是所有算法通用的,而有些是特定的。这些配置在选择使用算法后可以进行编辑。**

Weka 扩展包

在 3.7.2 版本中,添加了一个包管理器,以方便安装扩展包。此版本之前包含在 Weka 中的某些功能已移至此类扩展包中,但此更改也使其他人更容易为 Weka 贡献扩展并维护软件,因为这种模块化架构允许 Weka 核心和各个扩展独立更新。