使用Weka进行数据挖掘(Weka教程七)Weka分类/预测模型构建与评价

  • 数据挖掘分类

数据挖掘主要包括以下几个方面:
· 分类 (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进行数据挖掘(Weka教程七)Weka分类/预测模型构建与评价_第1张图片


可以看到输出的信息是十分丰富的。
上述过程中使用到了交叉验证,具体将在接下来的博客中分析。

模型的预测
模型训练完毕后,接下来就是对传入的新数据进行预测了,在Weka中,新数据的预测也十分简单,代码如下:

 try {
      res = model.classifyInstance(sample);
     } catch (Exception e) {
            e.printStackTrace();
     }

注意传入的数据必须是Instance,因此对于数据集,我们要先将它转换成Instance才可以进行Predict。如何生成Instance,之前的博客已经讲过了,在此不再赘述。

你可能感兴趣的:(Weka+Java数据挖掘)