本文重点讲述如何使用Weka API中的Kmeans算法进行实践。这一篇是所有机器学习文章里面的第一篇,因此选择的是Kmeans算法来进行实践。废话不多说,开始吧!
实践环境
这里的环境主要是介绍使用的Maven包,pom文件如下:
1 | <dependencies> |
选择使用Google的Guava包是因为我们在载入数据集的时候会需要Guava工具包帮我们从classpath(这里是resources目录)下面直接载入进来。
准备数据集
针对Kmeans算法,我选择的是比较经典的IRIS数据集。下载地址是:https://archive.ics.uci.edu/ml/datasets/iris。部分片段如下:
1 | 5.1,3.5,1.4,0.2,Iris-setosa |
可以看到它是一种csv(Comma Separated Value)文件。但是我们前面讲到过,使用Weka处理数据的时候通常需要对它进行一下转换,转换为arff文件。因此,我们需要对数据集进行预处理。预处理的过程非常简单,由于数据集不大,所以直接在数据集里面添加一些元信息即可。
1 | @RELATION iris |
Kmeans算法实践
完整的代码如下:
1 | package com.qinjiangbo.algorithms.kmeans; |
关于代码中的步骤我就不一一介绍了,因为注释已经解释的很详细了,不过一定要记住操作的顺序:
- 加载数据集
- 初始化聚类器对象
- 开始聚类
- 打印聚类结果
Kmeans运行结果
将以上的代码拷贝到你的编辑器中,编译执行你就能看到以下结果:
1 | Preserve order of instances. |
总结
如果你得到了上面的运行结果,说明你的代码运行完全正确。通过本文章的学习,我相信你已经掌握了Weka中基本的数据集处理及训练流程,后面再结合其它的算法能更加深入地理解机器学习的套路
。