【译者注】在当下人工智能火爆发展的局面,每时每刻都有新的技术在诞生,但如果你是一个新手,Weka或许能帮助你直观、快速的感受机器学习带来的解决问题的新思路。
Weka使机器学习的应用变得简单、高效并且充满乐趣。它拥有图形界面,并且允许你加载自己的数据集,运行算法并且产生足够可靠、让人信服的结果。
我把Weka推荐给机器学习的新手,因为它帮助我们把精力集中在机器学习应用的本身,而不是陷入数学和编程的泥潭。这些技能可以在后续的学习中逐渐掌握。
本文将一步步告诉你如何加载数据集,运行高级的分类算法并且展示分类结果,这看起来很简单。跟随我的操作,你会在5分钟内得到机器学习的结果,并且你可以使用这个方法常识更多的数据集和算法。
1. 下载并安装Weka
访问Weka下载页面,根据你的系统下载合适的版本(Windows,Mac 或Linux)。
2. 启动Weka
双击weka.jar文件,程序将启动一个Weka GUI Chooser,通过这个界面可以运行Explorer(探索模式),Experimenter(实验),KnowledgeExplorer和Simple CLI(command line interface)。
点击“Explorer”按钮启动Weka Explorer。
这个界面中,你可以加载数据集,运行分类算法。也提供了数据过滤、聚类、关联规则提取和可视化等特性,但我们并不会现在就使用这些特性。
3. 打开 data/iris.arff 数据集(Dataset)
Weka提供了一些小型公共机器学习数据集可以用来实践。
单击“Open file...”按钮从本地目录中选择 “iris.arff” 文件加载Iris(鸢尾花)数据集。
鸢尾花(Iris)数据集是一个著名的统计学资料,被机器学习研究人员大量使用。它包含了150组实例,4种生物特征和每组实例对应的鸢尾花种类(setosa,versicolor,virginica),你可以从维基百科了解到更多关于鸢尾花数据集的信息。
4.选择并且运行算法
现在你已经加载了数据集,是时候选择一个机器学习算法建立问题模型并且做出预测。
单击“Classify”选项卡,在这里你可以针对加载的数据集运行处理算法。
你需要注意到“ZeroR”算法被默认选中,单击“Start”按钮运行算法。
ZeroR算法选择数据集中的主要种类(鸢尾花的三种特性在数据中等比例呈现,所以它得出的结果是第一种:setosa)并以此完成所有的预测。这是衡量其它算法正确性的基准。正如我们所期望的,结果是33%(共三种类别,每种有相同的可能性,相当于三分之一,每次预测有33%的分类准确度)。
也许你注意到了测试选项(test options)使用了10倍交叉验证。这意味着数据集会被分为10份,前九份用来训练算法,第10份用来评估算法。重复这个过程,使者10份被分割的数据集都有可能被用作测试集。你可以从这里了解更多关于交叉验证的知识。
ZeroR算法虽然重要,但太让人厌烦了。
单击“Choose”按钮,在Classifier区域单击“trees”然后选择“J48”算法。这是一个C4.8算法的Java实现(J 代表Java,48代表C4.8,因此使用了J48这个名字)同时也是著名的C4.5算法的延伸。你可以从跟这里了解更多关于C4.5的知识。
单击“Start”运行算法。
5. 运行结果
运行J48算法之后,你会注意到“Classifier output”区域输出的结果。
算法运行了10倍交叉验证,这意味着数据集中的每组实例都有机会用来做预测(在分成不同份之后)展现的结果,是这些预测的汇总。
首先请注意“Classification Accuracy”,可以看出算法模型达到了96%的准确度,看起来比基准值33%好太多了。
然后看“Confusion Matrix”,你可以看到真实的分类结果的表格。其中1个错误,把Iris-vsetosa分类到了Iris-versicolor,2个把Iris-virginica分类到Iris-versicolor还有3个Iris-versicolor被分类到Iris-setosa(一共6个错误)。这个表格可以帮助解释算法的准确度。
总结
本文中你使用Weka加载了第一个数据集并且运行了第一个机器学习算法(C4.8算法的一种实现)。ZeroR算法不能计算在内,它只是一个好用的判断基准。
你现在知道了使用Weka加载数据和运行算法的方法,以后可以尝试不同的算法看能得出什么结果。
如果你使用Iris数据集得到了比96%更高的准确度,可以在评论区告诉我。
[2] ZeroR算法介绍