使用Weka进行数据挖掘(Weka教程七)Weka分类/预测模型构建与评价
2016-03-14 13:12
579 查看
数据挖掘分类
数据挖掘主要包括以下几个方面:
· 分类 (Classification)
· 估计(Estimation)
· 预测(Prediction)
· 相关性分组或关联规则(Affinity grouping or association rules)
· 聚类(Clustering)
· 复杂数据类型挖掘(Text, Web ,图形图像,视频,音频等)
其中对于分类算法,首先从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类。
实现分类算法
以最简单的决策树算法为例,在Weka中,决策树算法的实现是J48类,因此我们只需要创建J48对象就可以创建决策树。整个过程可以分为如下步骤:
数据准备
所有的Weka算法接受的数据都是Instances,之前的博客已经讲过了,我们要做的就是加载数据,然后使用Filter对数据进行一定的操作,满足特定算法的需求。具体的将在决策树中讲解。
模型配置
在模型准备前,要对模型进行适当的配置,Weka中是通过传入Options数组来实现的,然后使用模型的setOptions(options)方法将模型配置信息传入
模型学习
模型学习过程就是使用训练数据对模型进行训练,在Weka中只需要调用模型的buildClassifier(data)方法即可。
上述三个过程可以用以下代码表示:
以上几行简短的代码就可以完成模型的整个训练过程。
模型评价
模型训练完后,接下来要对模型进行评价,常见的评价指标有很多,对于分类模型,如TP,FP,TN,FN,Recall,Precision,ROC曲线等等,这些在Weka中都有实现。具体指标的意义将在其他博客中讲解。
那么在Weka中怎么实现对模型的评价呢?
你可以通过创建Evaluation对象来实现评价,具体代码如下:
评价的典型输出如下:
可以看到输出的信息是十分丰富的。
上述过程中使用到了交叉验证,具体将在接下来的博客中分析。
模型的预测
模型训练完毕后,接下来就是对传入的新数据进行预测了,在Weka中,新数据的预测也十分简单,代码如下:
注意传入的数据必须是Instance,因此对于数据集,我们要先将它转换成Instance才可以进行Predict。如何生成Instance,之前的博客已经讲过了,在此不再赘述。
数据挖掘主要包括以下几个方面:
· 分类 (Classification)
· 估计(Estimation)
· 预测(Prediction)
· 相关性分组或关联规则(Affinity grouping or association rules)
· 聚类(Clustering)
· 复杂数据类型挖掘(Text, Web ,图形图像,视频,音频等)
其中对于分类算法,首先从数据中选出已经分好类的训练集,在该训练集上运用数据挖掘分类的技术,建立分类模型,对于没有分类的数据进行分类。
实现分类算法
以最简单的决策树算法为例,在Weka中,决策树算法的实现是J48类,因此我们只需要创建J48对象就可以创建决策树。整个过程可以分为如下步骤:
数据准备
所有的Weka算法接受的数据都是Instances,之前的博客已经讲过了,我们要做的就是加载数据,然后使用Filter对数据进行一定的操作,满足特定算法的需求。具体的将在决策树中讲解。
模型配置
在模型准备前,要对模型进行适当的配置,Weka中是通过传入Options数组来实现的,然后使用模型的setOptions(options)方法将模型配置信息传入
模型学习
模型学习过程就是使用训练数据对模型进行训练,在Weka中只需要调用模型的buildClassifier(data)方法即可。
上述三个过程可以用以下代码表示:
class CARTModel { public CARTModel(Instances data) throws Exception{ J48 model = new J48(); String[] options = {"-M","5","-R"}; model.setOptions(options); model.buildClassifier(data); } }
以上几行简短的代码就可以完成模型的整个训练过程。
模型评价
模型训练完后,接下来要对模型进行评价,常见的评价指标有很多,对于分类模型,如TP,FP,TN,FN,Recall,Precision,ROC曲线等等,这些在Weka中都有实现。具体指标的意义将在其他博客中讲解。
那么在Weka中怎么实现对模型的评价呢?
你可以通过创建Evaluation对象来实现评价,具体代码如下:
Evaluation eval = new Evaluation(testData); eval.crossValidateModel(model, trainSet, 10, new Random(1)); System.out.println(eval.toSummaryString("\nResult", false)); System.out.println(eval.toClassDetailsString());
评价的典型输出如下:
可以看到输出的信息是十分丰富的。
上述过程中使用到了交叉验证,具体将在接下来的博客中分析。
模型的预测
模型训练完毕后,接下来就是对传入的新数据进行预测了,在Weka中,新数据的预测也十分简单,代码如下:
try { res = model.classifyInstance(sample); } catch (Exception e) { e.printStackTrace(); }
注意传入的数据必须是Instance,因此对于数据集,我们要先将它转换成Instance才可以进行Predict。如何生成Instance,之前的博客已经讲过了,在此不再赘述。
相关文章推荐
- 【小技巧】
- javac 及 java命令的使用问题(错误或无法加载主类)
- 程序包com.sun.image.codec.jpeg不存在 问题的完美解决
- 141. Linked List Cycle
- 137. Single Number II
- 136. Single Number
- 119. Pascal's Triangle II
- 架构漫谈(一):什么是架构?
- 写在最前面 - 每天5分钟玩转 OpenStack(1)
- 116. Populating Next Right Pointers in Each Node
- 112. Path Sum
- 110. Balanced Binary Tree(1)
- 2016蓝桥杯算法训练——关联矩阵
- 架构的本质
- android 遇到的一个小问题
- 第三篇:更新异常与规范化设计
- 微软全面发起大数据攻势,加入1.6万亿数据红利争夺战
- 哈理工oj/hrbust 1492 盒子【最大二分匹配】
- 下拉框内容太多,一个带搜索功能的下拉输入框实现
- iOS 视频播放