数据挖掘与机器学习WEKA应用技术与实践pdf下载pdf下载

数据挖掘与机器学习WEKA应用技术与实践百度网盘pdf下载

作者:
简介:本篇主要提供数据挖掘与机器学习WEKA应用技术与实践pdf下载
出版社:清华大学出版社
出版时间:2016-08
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色

编辑推荐

  系统讲解数据挖掘机器学习工具Weka经典的开源挖掘工具、开放的Java环境初学者的入门*选、研究者的钻研利器

内容简介

   本书借助代表当今数据挖掘和机器学习*高水平的著名开源软件Weka,通过大量的实践操作,使读者了解并掌握数据挖掘和机器学习的相关技能,拉近理论与实践的距离。全书共分9章,主要内容包括Weka介绍、探索者界面、知识流界面、实验者界面、命令行界面、Weka高级应用、Weka API、学习方案源代码分析和机器学习实战。 本书系统讲解Weka 3.7.13的操作、理论和应用,内容全面、实例丰富、可操作性强,做到理论与实践的统一。本书适合数据挖掘和机器学习相关人员作为技术参考书使用,也适合用作计算机专业高年级本科生和研究生的教材或教学参考用书。

作者简介

  袁梅宇,男,工学博士,硕士导师,现在昆明理工大学计算机系任教。为本科生和研究生主讲Java程序设计、JavaEE技术、数据库原理、人工智能、DotNet技术等核心课程,参加过863CIMSNet建设、中欧合作项目DRAGON和多项国家基金和省基金项目,第*作者公开发表论文十余篇,软件著作权(颁证)六项。

内页插图

目录

第1章 Weka介绍 1
1.1 Weka简介 2
1.1.1 Weka历史 3
1.1.2 Weka功能简介 3
1.2 基本概念 5
1.2.1 数据挖掘和机器学习 5
1.2.2 数据和数据集 5
1.2.3 ARFF格式 6
1.2.4 预处理 7
1.2.5 分类与回归 10
1.2.6 聚类分析 12
1.2.7 关联分析 12
1.3 Weka系统安装 13
1.3.1 系统要求 13
1.3.2 安装过程 14
1.3.3 Weka使用初步 16
1.3.4 系统运行注意事项 18
1.4 访问数据库 24
1.4.1 配置文件 25
1.4.2 数据库设置 26
1.4.3 常见问题及解决办法 27
1.5 示例数据集 28
1.5.1 天气问题 29
1.5.2 鸢尾花 30
1.5.3 CPU 31
1.5.4 玻璃数据集 32
1.5.5 美国国会投票记录 33
1.5.6 乳腺癌数据集 33
课后强化练习 34
第2章 探索者界面 35
2.1 图形用户界面 36
2.1.1 标签页简介 36
2.1.2 状态栏 37
2.1.3 图像输出 37
2.1.4 手把手教你用 37
2.2 预处理 40
2.2.1 加载数据 40
2.2.2 属性处理 43
2.2.3 过滤器 44
2.2.4 过滤器算法介绍 46
2.2.5 手把手教你用 52
2.3 分类 59
2.3.1 分类器选择 59
2.3.2 分类器训练 61
2.3.3 分类器输出 62
2.3.4 分类算法介绍 65
2.3.5 分类模型评估 79
2.3.6 手把手教你用 81
2.4 聚类 98
2.4.1 Cluster标签页的操作 98
2.4.2 聚类算法介绍 99
2.4.3 手把手教你用 101
2.5 关联 107
2.5.1 Associate标签页的操作 107
2.5.2 关联算法介绍 108
2.5.3 手把手教你用 111
2.6 选择属性 117
2.6.1 Select attributes标签页的
操作 118
2.6.2 选择属性算法介绍 119
2.6.3 手把手教你用 120
2.7 可视化 128
2.7.1 Visualize标签页 128
2.7.2 边界可视化工具 131
2.7.3 代价/收益分析可视化 133
2.7.4 手把手教你用 134
课后强化练习 140
第3章 知识流界面 143
3.1 知识流介绍 144
3.1.1 知识流特性 144
3.1.2 知识流界面布局 145
3.2 知识流组件 148
3.2.1 数据源 148
3.2.2 数据接收器 151
3.2.3 评估器 155
3.2.4 可视化器 156
3.2.5 其他工具 158
3.3 使用知识流组件 160
3.4 手把手教你用 162
课后强化练习 181
第4章 实验者界面 183
4.1 简介 184
4.2 标准实验 185
4.2.1 简单实验 185
4.2.2 高级实验 190
4.2.3 手把手教你用 198
4.3 远程实验 210
4.3.1 远程实验设置 210
4.3.2 手把手教你用 213
4.4 分析结果 221
4.4.1 获取实验结果 221
4.4.2 动作 221
4.4.3 配置测试 222
4.4.4 保存结果 225
4.4.5 手把手教你用 225
课后强化练习 229
第5章 命令行界面 231
5.1 命令行界面介绍 232
5.1.1 命令调用 233
5.1.2 命令自动完成 234
5.2 Weka结构 235
5.2.1 类实例和包 235
5.2.2 weka.core包 236
5.2.3 weka.classifiers包 237
5.2.4 其他包 238
5.3 命令行选项 238
5.3.1 常规选项 239
5.3.2 特定选项 241
5.4 过滤器和分类器选项 242
5.4.1 过滤器选项 242
5.4.2 分类器选项 245
5.4.3 手把手教你用 247
5.5 包管理器 252
5.5.1 命令行包管理器 252
5.5.2 运行安装的算法 254
课后强化练习 255
第6章 Weka高级应用 257
6.1 贝叶斯网络 258
6.1.1 简介 258
6.1.2 贝叶斯网络编辑器 261
6.1.3 在探索者界面中使用贝叶斯
网络 269
6.1.4 结构学习 270
6.1.5 分布学习 272
6.1.6 查看贝叶斯网络 273
6.1.7 手把手教你用 276
6.2 神经网络 286
6.2.1 GUI使用 286
6.2.2 手把手教你用 289
6.3 文本分类 293
6.3.1 文本分类示例 294
6.3.2 分类真实文本 298
6.3.3 手把手教你用 300
6.4 时间序列分析及预测 306
6.4.1 使用时间序列环境 306
6.4.2 手把手教你用 318
课后强化练习 326
第7章 Weka API 327
7.1 加载数据 328
7.1.1 从文件加载数据 328
7.1.2 从数据库加载数据 329
7.1.3 手把手教你用 330
7.2 保存数据 335
7.2.1 保存数据至文件 335
7.2.2 保存数据至数据库 335
7.2.3 手把手教你用 336
7.3 处理选项 339
7.3.1 选项处理方法 339
7.3.2 手把手教你用 340
7.4 内存数据集处理 341
7.4.1 在内存中创建数据集 341
7.4.2 打乱数据顺序 345
7.4.3 手把手教你用 345
7.5 过滤 349
7.5.1 批量过滤 350
7.5.2 即时过滤 351
7.5.3 手把手教你用 351
7.6 分类 355
7.6.1 分类器构建 355
7.6.2 分类器评估 356
7.6.3 实例分类 358
7.6.4 手把手教你用 359
7.7 聚类 370
7.7.1 聚类器构建 370
7.7.2 聚类器评估 371
7.7.3 实例聚类 373
7.7.4 手把手教你用 373
7.8 属性选择 379
7.8.1 使用元分类器 380
7.8.2 使用过滤器 380
7.8.3 使用底层API 381
7.8.4 手把手教你用 381
7.9 可视化 384
7.9.1 ROC曲线 385
7.9.2 图 385
7.9.3 手把手教你用 386
7.10 序列化 391
7.10.1 序列化基本方法 391
7.10.2 手把手教你用 392
7.11 文本分类综合示例 395
7.11.1 程序运行准备 395
7.11.2 源程序分析 396
7.11.3 运行说明 403
课后强化练习 404
第8章 学习方案源代码分析 405
8.1 NaiveBayes源代码分析 406
8.2 实现分类器的约定 427
课后强化练习 429
第9章 机器学习实战 431
9.1 数据挖掘过程概述 432
9.1.1 CRISP-DM过程 432
9.1.2 数据预处理 433
9.1.3 挖掘项目及工具概述 434
9.2 实战KDD Cup 1999 434
9.2.1 任务描述 435
9.2.2 数据集描述 436
9.2.3 挖掘详细过程 438
9.3 实战KDD Cup 2010 447
9.3.1 任务描述 447
9.3.2 数据集描述 447
9.3.3 挖掘详细过程 450
9.3.4 更接近实际的挖掘过程 459
课后强化练习 471
附录A 中英文术语对照 472
附录B Weka算法介绍 476
过滤器算法介绍 476
分类算法介绍 498
聚类算法介绍 526
关联算法介绍 530
选择属性算法介绍 532
参考文献 537

精彩书摘

第2章 探索者界面


探索者(Explorer)界面是Weka的主要图形用户界面,其全部功能都可通过菜单选择或表单填写进行访问。本章介绍探索者的图形用户界面、预处理、分类、聚类、关联、选择属性和可视化等内容,内容非常丰富,学习这些知识可以全面了解Weka的功能,快速上手实际的挖掘任务。

2.1 图形用户界面

启动Weka GUI 选择器窗口之后,单击Explorer按钮,即可启动探索者界面。这时,由于没有加载数据集,除Preprocess标签页外,其他标签页都变灰而不可用。可以使用Open file、Open URL、Open DB或者Generate按钮加载或产生数据集,加载数据集之后,其他标签页才可以使用。

这里以打开文件为例进行说明。单击Open file按钮,通过弹出的“打开”对话框,选择打开data子目录下的iris.arff文件,加载数据集后的探索者界面如图2.1所示。

图2.1 探索者界面

下面按照先整体后局部的顺序介绍图形用户界面。

2.1.1 标签页简介

图2.1所示界面的顶部有六个不同的标签页,分别对应Weka所支持的多种数据挖掘方式。

这六个标签页的介绍如下。

(1) Preprocess(预处理):选择数据集,并以不同方式对其进行修改。

(2) Classify(分类):训练用于分类或回归的学习方案,并对其进行评估。

(3) Cluster(聚类):学习数据集聚类方案。

(4) Associate(关联):学习数据关联规则,并对其进行评估。

(5) Select attributes(选择属性):选择数据集中预测效果最好的部分属性。

(6) Visualize(可视化):查看不同的二维数据散点图,并与其进行互动。

每个标签页都可完成不同工作,单击相应的标签即可实现标签页的切换。

界面底部包括Status(状态)栏、Log(日志)按钮和一只Weka鸟,这些都一直保持可见,不论用户切换到哪一个标签页。

2.1.2 状态栏

状态栏位于界面最下部,可以让用户了解到现在进行到哪一步。例如,如果Weka探索者正在忙于加载数据文件,状态栏中会显示相应的状态信息。

除了显示状态之外,还可以右击鼠标来显示内存信息,以及运行垃圾回收器以清理内存。在状态栏的任意位置右击,弹出的快捷菜单中只包括两个菜单项:Memory information(内存信息)和Run garbage collector(运行垃圾回收器)。第一个菜单项用于显示Weka当前可用的内存空间;第二个菜单项用于启动Java垃圾回收器,搜寻不再使用的内存并释放,以回收部分内存空间,提供给新的任务使用。需要指出的是,垃圾回收器是一个不间断运行的后台任务,如果不强制进行垃圾回收,Java虚拟机也会在适当时候自动启动垃圾回收器。

Log按钮位于状态栏的右面,单击该按钮会打开可以滚动的日志窗口,显示在此次运行期间内Weka 进行的全部活动以及每项活动的时间戳。不管是使用GUI、命令行还是Simple CLI,日志都会包含分类、聚类、属性选择等操作的完整的设置字符串,用户可以进行复制和粘贴操作。顺便提醒读者,通过学习日志里记录的命令,可以深层次地了解Weka的内部运行机制。

在Log按钮的右边,可以看到被称为Weka状态图标的鸟。如果没有处理过程在运行,小鸟会坐下来打个盹。“”符号旁边的数字显示目前有多少个正在进行处理的进程,当系统空闲时,该数字为零,数字会随着正在进行处理进程数的增加而增加。当启动处理进程时,小鸟会站起来不停走动。如果小鸟长时间站着不动,说明Weka出现运行错误,此时用户需要关闭并重新启动探索者界面。

2.1.3 图像输出

Weka中显示的大部分图形,包括本章的探索者界面和后面章节的知识流界面、实验者界面显示的图形,以及通过Weka GUI选择器菜单带出的GraphVisualizer(图可视化工具)或TreeVisualizer(树可视化工具)显示的图形,都可以保存为图像文件以备将来使用。保存方法是,在按住Alt键和Shift键的同时,在要保存的图形上单击,启动保存文件对话框。Weka支持的图像文件格式有BMP、JPEG、PNG和Postscript的EPS,用户可以选择图像文件格式,还可以修改输出图像文件的尺寸。

2.1.4 手把手教你用

1. 启动Weka

双击桌面上的Weka 3.7快捷方式,启动Weka GUI选择器窗口,如图2.2所示。

单击Explorer按钮启动探索者界面,如图2.3所示。现在,除Preprocess标签页可用外,其余标签页都不可用。

图2.2 Weka GUI选择器窗口

图2.3 探索者界面

2. 了解标签页

单击图2.3所示界面中的Open file按钮,弹出“打开”对话框,导航至Weka安装目录下的data子目录,选择iris.arff文件,如图2.4所示。单击“打开”按钮,打开该文件。

图2.4 “打开”对话框

打开文件(或称为加载数据)后的探索者界面如图2.5所示。可以看到,加载数据后,六个标签页都变为可用状态。

图2.5 打开文件后的探索者界面

读者可以自行切换标签页,初步了解各标签页的功能,为后续学习打下基础。

3. 了解状态栏

不论切换到哪个标签页,都可在探索者界面下部的状态栏中查看状态信息。在状态栏任意位置右击,在弹出的快捷菜单中选择Memory information菜单项,状态栏显示用斜杠分割的内存信息,格式为:空闲内存/全部内存/最大内存,单位是字节,如图2.6所示。

图2.6 内存信息

如果在快捷菜单中选择Run garbage collector菜单项,状态栏中会显示OK信息,表示已经启动了垃圾回收器,如图2.7所示。

图2.7 运行垃圾回收器

单击状态栏右边的Log按钮,可以查看当前日志,如图2.8所示。

图2.8 日志窗口

4. 保存图像文件

单击图2.5所示界面右边的Visualize All(全部可视化)按钮,打开如图2.9所示的全部可视化窗口。

图2.9 全部可视化窗口

同时按住Alt键和Shift键,并在图2.9所示的五幅图标中任选一图标,在图标的任意位置单击,启动Save as对话框。设置“文件名”为test,选择“文件类型”为jpg(或其他格式),单击“保存”按钮,就可将其保存为图像文件,如图2.10所示。

图2.10 Save as对话框

在图2.10的右边,还可以定制图像文件的长、宽尺寸,单位为像素。选中Use custom dimensions(使用自定义尺寸)复选框,就可以设置图像尺寸。如果选中Keep aspect ratio(保持宽高比)复选框,则在修改图像长(或宽)的同时,会按比例自动缩放宽(或长)。

2.2 预 处 理

Preprocess标签页可用于从文件、URL或数据库中加载数据集,并且根据应用要求或领域知识过滤掉不需要进行处理或不符合要求的数据。

2.2.1 加载数据

Preprocess标签页中顶部的前四个按钮可以让用户将数据加载到Weka系统。Open file按钮用于启动“打开”对话框,用户可以浏览本地文件系统,打开本地数据文件。Open URL按钮要求用户提供一个URL地址,Weka使用HTTP协议从网络位置下载数据文件。Open DB按钮用于从数据库中读取数据,支持所有能够用JDBC驱动程序读取的数据库,使用SQL语句或存储过程读取数据表。注意,必须根据自己的计算机环境配置,相应修改weka\experiment\DatabaseUtils.props配置文件后才能访问数据库,具体参见1.4节内容。Generate按钮用于让用户使用不同的DataGenerators(数据生成器)生成人工数据,适用于分类功能的人工数据可以由决策列表RDG1、径向基函数网络RandomRBF、贝叶斯网络BayesNet、LED24等算法产生,人工回归数据也可以根据数学表达式生成,用于聚类的人工数据可以使用现成的生成算法产生。

使用Open file按钮,可以读取多种数据格式的文件,包括Weka ARFF格式、C4.5数据格式、CSV格式、JSON实例文件格式、LibSVM数据文件格式、Matlab ASCII文件格式、svm轻量级数据文件格式、XRFF格式,以及序列化实例的格式。其中,ARFF格式的后缀为.arff,C4.5数据格式的后缀为.data或.names,CSV格式的后缀为.csv,JSON实例文件格式的后缀为.json,LibSVM数据文件格式的后缀为.libsvm,Matlab ASCII文件格式的后缀为.m,svm轻量级数据文件格式的后缀为.dat,XRFF格式的后缀为.xrff,序列化实例对象文件的后缀为.bsi。有的格式后缀还会加上.gz,这代表对应文件的压缩形式。

另外,使用Save(保存)按钮,可以将已加载的数据保存为Weka支持的文件格式。该功能特别适合在不同文件格式之间进行转换,以及学习Weka文件格式的细节。

由于存在多种数据格式,为了从不同种类的数据源中导入数据,Weka提供实用工具类进行转换,这种工具称为转换器(converters),位于weka.core.converters包中。按照功能的不同,转换器分为加载器和保存器,前者的Java类名以Loader结束,后者以Saver结束。

加载数据后,Preprocess标签页会在Current relation(当前关系)选项组中显示当前数据集的一些总结信息。Relation(关系)栏显示关系名称,该名称由加载的文件给定;Attributes(属性)栏显示数据集中的属性(或特征)个数;Instances(实例)栏显示数据集中的实例(或数据点/记录)个数;Sum of weights(权重和)栏显示全部实例的权重之和。例如,当加载iris数据集后,Current relation选项组中显示关系名称为iris,属性个数为5,实例个数为150,权重和为150,如图2.11所示。

图2.11 Current relation选项组

Weka根据文件后缀调用不同的转换器来加载数据集。如果Weka无法加载数据,就会尝试以ARFF格式解释数据,如果再次失败,就会弹出如图2.12所示的提示对话框,提示Weka无法自行决定使用哪一个文件加载器,需要用户自己来选择。

单击图2.12中的“确定”按钮后,会弹出如图2.13所示的通用对象编辑器对话框,让用户选择能打开数据文件的对应转换器。默认转换器为CSVLoader,该转换器专门用于加载后缀为.csv的文件。如果用户已经确定数据文件格式是CSV格式,那么可以输入日期格式、字段分割符等信息。如果对对话框里的各选项不了解,可以单击More按钮查看使用说明。

图2.12 加载数据失败

如果用户已经知道数据文件格式不是CSV格式,可以单击通用对象编辑器对话框上部的Choose按钮选择其他的转换器,如图2.14所示。

图2.13 通用对象编辑器对话框

图2.14 选择转换器

图2.14所示对话框中,第一个选项是ArffLoader,选择该选项并成功的可能性很小,因为默认就是使用它来加载数据集,没有成功才会弹出加载数据失败的提示对话框。第二个选项是C45Loader,C4.5格式的数据集由两个文件共同构成,一个文件(.names)提供字段名,另一个文件(.data)提供实际数据。第三个选项是默认的CSVLoader,这是一种以逗号分隔各属性的文件格式,前文已经介绍了这种数据转换器。第四个选项DatabaseLoader是从数据库,而不是文件中读取数据集。然而,使用第1章介绍的SQLViewer工具来访问数据库,是更为人性化且方便的方案。SerializedInstancesLoader选项用于重新加载以前作为Java序列化对象保存的数据集。任何Java对象都可以采用这种格式予以保存并重新加载。由于序列化对象本身就是Java格式,使用它可能比加载ARFF文件的速度更快,这是因为加载ARFF文件时必须对其进行分析和检查,从而花费更多的时间。如果需要多次加载大数据集,则很值得以这种数据格式进行保存。

值得一提的是TextDirectoryLoader加载器,它的功能是导入一个目录,目录中包含若干以文本挖掘为目的的纯文本文件。导入目录应该有特定的结构——一组子目录,每个子目录包含一个或多个扩展名为.txt的文本文件,每个文本文件都会成为数据集中的一个实例,其中,一个字符串型属性保存该文件的内容,一个标称型的类别属性保存文件所在的子目录名称。该数据集可以通过使用StringToWordVector过滤器进一步加工为词典,为后面的文本挖掘做准备。



前言/序言

再 版 前 言

  自本书第一版出版到现在已经过去近两年。这段时间内,数据挖掘和机器学习领域快速发展,投入到相关领域研究的人员也越来越多,Weka爱好者队伍也随之逐年发展壮大,Weka学习讨论群所讨论内容的技术含量也日渐丰富。

  第二版的修订工作以Weka 3.7.13版本为准,为此,全书重新截图,按照Weka新版本重新修订正文内容。此次再版修改了第一版中一些表述不清楚的陈述、前后不一致的术语,还新增了以下内容:第1章1.3节新增无法连接包管理器的解决办法,第2章2.7节新增边界可视化工具和代价/收益分析可视化及相关实验内容,第4章4.2节新增拆分评估器可视化参数内容,新增完整的第9章机器学习实战,丰富了Weka实践内容。

  修订后的第二版共分9章。第1章介绍Weka的历史和功能、数据挖掘和机器学习的基本概念、Weka系统安装,以及示例数据集;第2章介绍探索者(Explorer)界面的使用,主要内容包括图形用户界面、预处理、分类、聚类、关联、选择属性,以及可视化;第3章介绍知识流(KnowledgeFlow)界面,主要内容有知识流介绍、知识流组件、使用知识流组件,以及实践教程;第4章介绍实验者(Experimenter)界面,主要内容有实验者界面介绍、标准实验、远程实验,以及实验结果分析;第5章介绍命令行界面,主要内容有命令行界面介绍、Weka结构、命令行选项、过滤器和分类器选项,以及Weka包管理器;第6章介绍一些Weka的高级应用,主要介绍Weka的贝叶斯网络、神经网络、文本分类和时间序列分析及预测;第7章介绍Weka API,说明使用Java源代码来实现常见数据挖掘任务的基础知识,并给出一个展示如何进行数据挖掘的综合示例;第8章通过对NaiveBayes学习方案的源代码进行分析,深入研究Weka学习方案的工作原理,为开发人员提供实现学习算法的编码基础;第9章介绍如何使用Weka工具挖掘实际的大型数据集,以精选的两个KDD竞赛数据集为例,使读者能够快速进入实际的案例场景,应用所学数据挖掘知识来面对大数据的挖掘问题,考验自己完成难度较大的挖掘项目的动手能力。

  第二版改动的内容较多,总体工作量很大,花费了很多时间。从酝酿第二版内容开始,至其杀青,历时超过一年。作者的感觉是:比编写第一版还要辛苦些。且不说Weka版本变动导致的修改,重新截图、重新梳理文字、重新改写API文档等,费时费力。因时间变化引起的一个小小的技术变动,就让人费力应对。例如,怀卡托大学后来不再提供包管理器元数据,导致第一版所述的解决办法不再有效,只能重新寻找解决包管理器无法连接的替代方法。又如,新版本Weka的NaiveBayes源代码有一些变动,作者不得不修订第8章的内容以适应新的版本变化。再如,第一版提供的网络链接有的已经不再有效,出版社编辑老师测试了所有的链接,保证了第二版提供的网络链接的正确性。当然,由于世界变化太快,无法保证在一两年后这些链接不会失效,这是无可奈何的事,作者只能保证书中叙述的方案在交稿时可行。

  最耗费心力的应该是第9章的编写。早在第一版的写作中,曾经就有编写一个章节专门讲述Weka综合应用案例的设想,但苦于手上没有合适的实验对象。理想的应用案例必须满足如下要求:第一,难度适中。不能太简单,过于简单的小儿科案例会违背编写综合应用的初衷;也不能太难,如果应用的技术方案太偏或难以理解,就达不到锻炼读者实际动手能力的意义。第二,领域不能太窄,应该让绝大多数人都能理解。第三,运算量不能太大,应该满足普通计算机能够处理的要求。这就限制了目标数据集文件大小为数十兆字节至数吉字节范围以内,实例总数在数十万条至数千万条之间,一台计算机能够在两周左右运行完毕。作者花费了很长时间寻找满足以上要求的案例,最后选中KDD Cup 1999和KDD Cup 2010竞赛数据集,前者共有42个属性,10%数据子集文件的大小为45MB,样本数为494021,完整的数据集文件大小为743MB,样本数为4898431;后者有两个数据集,本书选中的是较大的数据集,共有21个属性,训练数据集文件大小为5.29GB,样本数为20012498。认真的读者会发现,完成这两个案例的实验将会很辛苦,花费的精力和时间会远超预期。作者想象出这么一个画面:读者按照书中的实验方法工作至深夜,硬盘灯不停闪烁,CPU利用率一直高居95%,读者担心心爱的计算机会突然崩溃但仍然坚持,直至最终胜利。作者预先恭喜那些能够独立完成实验的读者,因为你们有足够的能力和毅力应付技术挑战,胜任要求极高的挖掘工作。

  尽管在写作中付出了很多艰辛的劳动,但限于作者有限的能力和精力,书中肯定还存在一些缺陷,甚至错误,敬请各位读者批评指正。作者感谢修订工作的贡献者,昆明理工大学计算机系吴霖老师审阅了本书第9章内容,提出了很多建设性建议,感谢吴霖老师的贡献。昆明理工大学2014级研究生卫明同学参与了第1章和第2章的修订工作;光荣与梦想、弦月、Brady、海、__末瞳.夫、不说再见!等网友对第一版提出了宝贵的建议,作者在第二版中采纳了这些建议,感谢这些朋友的贡献。第9章参考了昆明理工大学2014届计算机系吴泽恒同学本科毕业设计论文的部分内容,他是我指导过的最优秀的学生,感谢吴泽恒同学。感谢选择本书为高校教学参考书的教师在使用过程中提出的反馈意见和建议,作者学习到一些很有价值的思考方式。再次感谢清华大学出版社的编辑老师在出版方面提出的建设性意见和给予的无私帮助,编辑老师一丝不苟的工作态度给我留下很深的印象。感谢购买本书的朋友,欢迎批评指正,你们的批评建议都会受到重视,并在再版中改进。希望第二版的发行能够吸引更多的读者和反馈建议。

  

  编 者

  


  

第一版前言

  当代中国掀起了一股学习数据挖掘和机器学习的热潮,从斯坦福大学公开课"机器学习课程",到龙星计划的"机器学习Machine Learning"课程,再到加州理工学院公开课"机器学习与数据挖掘"课程,参加这些网络课程学习的人群日益壮大,数据挖掘和机器学习炙手可热。

  数据挖掘是数据库知识发现中的一个步骤,它从大量数据中自动提取出隐含的、过去未知的、有价值的潜在信息。机器学习主要设计和分析一些让计算机可以自动"学习"的算法,这类算法可以从数据中自动分析获得规律,并利用规律对未知数据进行预测。数据挖掘和机器学习这两个领域联系密切,数据挖掘利用机器学习提供的技术来分析海量数据,以发掘数据中隐含的有用信息。

  数据挖掘和机器学习这两个密切相关的领域存在一个特点:理论很强而实践很弱。众所周知,理论和实践是研究者的左腿和右腿,缺了一条腿的研究者肯定难以前行。有的技术人员花了若干年时间进行研究,虽然了解甚至熟悉了很多公式和算法,但仍然难以真正去面对一个实际挖掘问题并很好地解决手上的技术难题,其根本原因就是缺乏实践。

  本书就是为了试图解决数据挖掘和机器学习的实践问题而编写的。本书依托新西兰怀卡托大学采用Java语言开发的著名开源软件Weka,该系统自1993年开始由新西兰政府资助,至今已经历了20多年的发展,功能已经十分强大和成熟。Weka集合了大量的机器学习和相关技术,受领域发展和用户需求所推动,代表了当今数据挖掘和机器学习领域的最高水平。因此,研究Weka能帮助研究者从实践去验证所学的理论,显然有很好的理论意义及实践意义。

  本书共分8章。第1章介绍Weka的历史和功能、数据挖掘和机器学习的基本概念、Weka系统安装,以及示例数据集;第2章介绍Explorer界面的使用,主要内容包括图形用户界面、预处理、分类、聚类、关联、选择属性,以及可视化;第3章介绍KnowledgeFlow界面,主要内容有知识流介绍、知识流组件、使用知识流组件,以及实践教程;第4章介绍Experimenter界面,主要内容有Experimenter界面介绍、标准实验、远程实验,以及实验结果分析;第5章介绍命令行界面,主要内容有命令行界面介绍、Weka结构、命令行选项、过滤器和分类器选项,以及Weka包管理器;第6章介绍一些Weka的高级应用,主要介绍Weka的贝叶斯网络、神经网络、文本分类和时间序列分析及预测;第7章介绍Weka API,说明使用Java源代码来实现常见数据挖掘任务的基础知识,并给出一个展示如何进行数据挖掘的综合示例;第8章通过对一个学习方案的源代码进行分析,深入研究Weka学习方案的工作原理,为开发人员提供编写学习算法的技术基础。

  在阅读大量相关文献的过程中,作者深深为国外前辈们的理论功底和实践技能所折服,那些巨人们站在高处,使人难以望其项背。虽然得益于诸如网易公开课和龙星计划等项目,我们有机会和全世界站在同一个数量级的知识起跑线上,但是,这并不意味着能在将来的竞争中占据优势,正如孙中山先生所说"革命尚未成功,同志仍须努力",让我们一起共勉。

  在本书的编写过程中,作者力求精益求精,但限于作者的知识和能力,且很多材料都难以获取,考证和去伪存真是一件时间开销非常大和异常困难的工作,因此书中肯定会有遗漏及不妥之处,敬请广大读者批评指正。

  作者专门为本书设置读者QQ群,欢迎读者加群,下载和探讨书中源代码,抒写读书心得,进行技术交流等。

  本书承蒙很多朋友、同事的帮助才得以成文。特别感谢Weka开发组的全体人员,他们将自己20年心血汇聚的成果开源,对本领域贡献巨大;衷心感谢清华大学出版社的编辑老师在内容组织、排版,以及出版方面提出的建设性意见和给予的无私帮助;感谢昆明理工大学提供的宽松的研究环境;感谢昆明理工大学计算机系教师缪祥华博士,他为本书的成文提出了很多建设性的建议,对本书的改进帮助甚大;感谢昆明理工大学计算机系海归博士吴霖老师,他经常和作者一起讨论机器学习的技术问题,为本书的编写贡献了很多智慧;感谢昆明理工大学现代教育中心的何佳老师,他完成了本书部分代码的编写和测试工作;感谢国内外的同行们,他们在网络论坛和博客上发表了众多卓有见识的文章,作者从中学习到很多知识,由于来源比较琐碎,无法一一列举,感谢他们对本书的贡献;感谢理解和支持我的家人,他们是我写作的坚强后盾。感谢购买本书的朋友,欢迎批评指正,你们的批评建议都会受到重视,并在再版中改进。

  

  编 者