您的位置:首页 > 其它

使用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)方法即可。

上述三个过程可以用以下代码表示:

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,之前的博客已经讲过了,在此不再赘述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: