平台数据分类与聚类实验报告

参考书籍:《数据流挖掘与在线学习算法》  李志杰

1.6.1 实验目的

本书内容以及课程实验主要涉及Java程序设计语言、数据挖掘工具Weka和数据流机器学习平台MOA,因此,需要安装、配置并熟悉实验环境。Java、WekaMOA都是开源小软件,简单易用,都可以在个人电脑的这些实验环境下完成。

1.6.2 实验环境

(1) 操作系统:Windows 10

(2) Java:1.8.0_181-b13

(3) Weka:3.8.4

(4) MOA:release-2020.07.1

1.6.3 安装平台

(1) Java安装与配置

最新标准版Java 可从Oracle官方网站https://www.oracle.com/免费下载,如下图所示。

安装JDK后,必须配置PATH环境变量和CLASSPATH环境变量才能使用,操作如下。

右击“我的电脑”→属性→高级系统设置→环境变量,如图所示进行配置。

下图中,JAVA_HOME配置为JDK安装路径:C:/Program Files/Java/jdk1.8.0-181。JavaPATH环境变量和CLASSPATH环境变量直接加在后面,每项用“ ;”隔开。CLASSPATH最前面的“.”表示当前路径。

配置完成后,点击“开始”→Windows系统→命令提示符,输入:javac。如无错误提示,则配置成功。

(2) Eclipse集成开发环境

Eclipse是常用的Java集成开发环境,可以从官网http://www.eclipse.org/downloads/免费下载。

(3) Weka安装

安装配置好Java后,可以从官网http://www.cs.waikato.ac.nz/~ml/weka/免费下载Weka。也可从本书官网“下载专区”目录下获得weka-3-8-4-azul-zulu-windows安装文件。

安装完成后,安装路径的data子目录下自带23个ARFF格式的示例数据集。

(4) MOA安装

MOA基于Java和Weka环境,可从官方网站https://moa.cms.waikato.ac.nz/免费下载。也可从本书官网“下载专区”目录下获得MOA压缩文件moa-release-2020.07.1-bin

MOA压缩包中包括moa.jar和sizeofag.jar等文件,无须安装。解包后双击子目录bin/moa.bat,即可启动MOA。

1.6.4 平台操作

(1) Weka图形用户界面

启动Weka,单击探索者Explorer按钮,Weka GUI如图1.37所示。加载一个数据集weather.nominal.arff,标签页Preprocess(预处理)、Classify(分类)、Cluster(聚类)、Associate(关联分析)、Select attributes(属性选择)、Visualize(可视化)等都变为可以使用。

(2) Eclipse环境下Weka API操作

除了GUI外,Weka还定义了应用程序编程接口API,很容易“嵌入”到Eclipse用户自己的Java项目中。

Eclipse中新建一个名为Weka的项目,右击Weka,点击Properties,Java Build Path→Libraries→Add External JARs,选中Weka装目录下的weka.jar,添加到库中,如图所示。

加载weather.nominal.arffweather.numeric.arff为例,示例代码见程序清单1.1。

程序清单1.1 加载ARFF文件

package weka;
import weka.core.Instances;
import weka.core.converters.ArffLoader;
import weka.core.converters.ConverterUtils.DataSource;
import java.io.File;
public class LoadArffFile {
   public static void main(String[] args) throws Exception {
	   Instances data1=DataSource.read("C:/Program Files/Weka-3-8-4/data/weather.nominal.arff");
	   System.out.println(data1);
	   
	   ArffLoader loader=new ArffLoader();
	   loader.setSource(new File("C:/Program Files/Weka-3-8-4/data/weather.numeric.arff"));
	   Instances data2=loader.getDataSet();
	   System.out.println(data2);
   }
}

(3) MOA图形用户界面

双击MOA子目录bin下moa.bat文件,即可启动MOA GUI。如图所示,通过点击Configure来设置某项任务。

(4) Eclipse环境下MOA API操作

Weka类似,除了GUI外,MOA还定义了应用程序编程接口API,很容易“嵌入”到Eclipse用户自己的Java项目中。

Eclipse中新建一个MOA的项目,右击该项目,点击Properties,Java Build Path→Libraries→Add External JARs,选中下载包中moa.jar和sizeofag.jar等文件,添加到库中,如图所示。

B 实验1报告-2  数据分类

2.5.1 实验目的

(1) 理解有监督数据分类原理与过程。

(2) 熟悉Weka分类操作。

(3) 熟悉MOA分类操作。

2.5.2 实验环境

(1) 操作系统:Windows 10

(2) Java:1.8.0_181-b13

(3) Weka:3.8.4

(4) MOA:release-2020.07.1

2.5.3 Weka分类

(1) 使用C4.5算法分类器

C4.5算法在Weka中实现为J48分类器,下面在Weka平台中使用J48分类器训练weather.nominal.arff数据集。

启动Weka→Explorer→Open file→weather.nominal.arff→Classify→Choose→trees→J48→Start,训练集构建J48分类器模型如上图所示。

右击图2.10的Result list区域中新生成条目→Visualize tree,弹出下图所示的决策树视图窗口。

(2) 使用分类器预测未知数据

构建图2.12所示的测试数据集test.arff,使用图2.11的决策树进行预测。

2.10的Test options区域,点击Supplied test set→Set→Open file→test.arff→Close→More options→Choose→PlainTest→OK→Start,则启动评估过程后,会发现多了一项测试集的预测结果,如下图所示。结果表明,测试集三个实例,其中两个预测正确,一个预测错误。

(3) 构建J48批量分类器

本示例用Java代码构建一个J48批量分类器,示例代码见程序清单2.1。

程序清单2.1构建J48批量分类器

import weka.classifiers.trees.J48;

import weka.core.Instances;

import weka.core.converters.ArffLoader;

import java.io.File;



public class J48Classifier {

   public static void main(String[] args) throws Exception {

   ArffLoader loader=new ArffLoader();

   loader.setFile(new File("C:/Program Files/Weka-3-8-4/data/weather.nominal.arff"));

   Instances data=loader.getDataSet();

   data.setClassIndex(data.numAttributes()-1);

   

   String[] options=new String[1];

   options[0]="-U";

   J48 tree=new J48();

   tree.setOptions(options);

   tree.buildClassifier(data);

   

   System.out.println(tree);

   }

}

在Eclipse中运行代码,输出训练好的决策树模型,如下图所示。

2.5.4 MOA分类

(1) 使用NaiveBayes分类器

① LearnModel

       启动MOA→Classification→Configure→tasks.LearnModel。

   选择:learner→bayes.NaiveBayes,stream→WaveformGenerator,maxInstances→1000000,taskResultFile→modelNB.moa。

           点击Run,则NaiveBayes模型存储到modelNB.moa中。

② EvaluateModel

           点击Configure→tasks.EvaluateModel。

   选择:stream→WaveformGenerator→instanceRandomSeed→2,maxInstances→1000000,然而,model无法选择到modelNB.moa,所有这里我们需要自己创建一个modelNB.moa。

   点击“确定”返回到Configure→右击命令行→Copy configuration to clipboard→Enter configuration→编辑配置-m file: modelNB.moa。任务命令行变为:EvaluateModel -m file:modelNB.moa -s (generators.WaveformGenerator -i 2) -i 1000000。

      点击Run运行。由于输出频率为100000步,中间面板有10项文字输出,结果如下图所示。

③ EvaluatePeriodicHeldOutTest

           点击Configure→tasks. EvaluatePeriodicHeldOutTest。

   选择:learner→bayes.NaiveBayes,stream→WaveformGenerator,testSize→100000,trainSize→10000000,sampleFrequency→1000000。

   点击Run运行。从下图可看到,中间面板有10项文字输出,底部面板显示最终统计与可视化结果。最终的准确率是80.48%。

④ EvaluateInterleavedTestThenTrain

   点击Configure→tasks. EvaluateInterleavedTestThenTrain。

   选择:learner→bayes.NaiveBayes,stream→WaveformGenerator,instanceLimit→1000000,sampleFrequency→10000。

   点击Run运行。从下图可看到,中间面板有100项文字输出,底部面板显示最终统计与可视化结果。最终的准确率是80.47%。

⑤ EvaluatePrequential

   点击Configure→tasks. EvaluatePrequential。

   选择:learner→bayes.NaiveBayes,stream→WaveformGenerator,evaluator→WindowClassificationPerformanceEvaluator→width→1000,instanceLimit→1000000,sampleFrequency→10000。

   点击Run运行。从下图可看到,中间面板有100项文字输出,底部面板显示最终统计与跳跃的锯齿形可视化结果。最终的准确率是80.30%。

(2) 使用Hoeffding树分类器

① 使用EvaluateModel嵌套LearnModel评估Hoeffding树

           点击Configure→tasks.EvaluateModel。

   选择:model→tasks.LearnModel→learner →trees. HoeffdingTree→stream→WaveformGenerator→maxInstances→1000000,stream→WaveformGenerator→instanceRandomSeed→2,maxInstances→1000000。

   点击“确定”返回到Configure。任务命令行为:EvaluateModel -m (LearnModel -l trees.HoeffdingTree -s generators.WaveformGenerator -m 1000000) -s (generators.WaveformGenerator -i 2) -i 1000000 -f 10000。

      点击Run运行,结果如下图所示。

② EvaluatePeriodicHeldOutTest、EvaluateInterleavedTestThenTrain和EvaluatePrequential

与NaiveBayes类似,Hoeffding树也可以分别使用数据流三种评估方式:EvaluatePeriodicHeldOutTest(在一个保留测试集上周期性截取性能快照)、EvaluateInterleavedTestThenTrain(交错式测试-训练评估法)和EvaluatePrequential(先序评估法)。评估Hoeffding树具体操作与上面(1)中NaiveBayes的操作类似。

事实上,MOA GUI底部可同时显示当前任务和之前任务的可视化结果,当前任务为红色,之前任务为蓝色。因此,比较NaiveBayes与Hoeffding树分类器性能非常方便和直观。

C 实验1报告-3  数据聚类

3.9.1 实验目的

(1) 理解无监督数据聚类原理与过程。

(2) 熟悉Weka聚类操作。

(3) 熟悉MOA聚类操作。

3.9.2 实验环境

(1) 操作系统:Windows 10

(2) Java:1.8.0_181-b13

(3) Weka:3.8.4

(4) MOA:release-2020.07.1

3.9.3 Weka聚类

聚类属于典型的的无监督学习方式,聚类对象是没有标签的实例或数据点。聚类的任务是要根据实例间的相似性进行分组,之前这些分组是未知的。

(1) 使用K-Means算法聚类

K-Means算法又称为K均值算法,是一种对数据集进行批量聚类的无监督学习算法。它依靠数据点彼此之间的距离远近对其进行分组,将一个给定的数据集分类为k个聚类。算法不断进行迭代计算和调整,直到达到一个理想的结果。K-Means算法在Weka平台实现为SimpleKMeans。

SimpleKMeans算法有两个重要参数,一个是distanceFunction,默认EuclideanDistance ;另一个是numClusters,默认值2。

下面以weather.numeric.arff数据集为例,使用SimpleKMeans算法聚类操作。聚类结果如图3.15所示。

启动Weka→Explorer→Open file→weather.numeric.arff→Cluster→Choose→SimpleKMeans→Ignore attributes→play→Select

单击Start,聚类过程开始

(2) 使用DBSCAN和OPTICS算法

这里我们的waka里面是没有这两个算法的,需要自己导包进去

导包过程参考:向weka 中添加DBSCAN算法_weka dbscan-CSDN博客

DBSCAN是经典的密度批量聚类算法,其基本思想是邻域内含有大量点的核心点构建聚类。算法以任意顺序访问数据点,如果该点为核心点,则该点与其所有可达的数据点形成新的聚类。非核心点则标为“离群值”,直到有一个新的核心点与“离群值”可达,“离群值”才加入该聚类。

DBSCAN密度方法可以聚类非球形形状的数据,这是K -均值聚类方法难以做到的。OPTICS算法则在层次聚类方面扩展了DBSCAN算法。

以鸢尾花数据集为例,使用Weka平台的DBSCAN和OPTICS算法,操作和显示结果如下。

启动Weka→Explorer→Open file→iris.arff→Cluster→Choose→DBSCAN,选择了DBSCAN聚类算法。

点击Choose右边DBSCAN的文本框→参数epsilion=0.2→参数minPoints=5→OK。

点击Ignore attributes→class→Select。

单击Start,DBSCAN聚类结果如下图所示。

使用OPTICS对鸢尾花数据集聚类,操作过程类似于DBSCAN。

选择OPTICS聚类算法后,设OPTICS参数epsilion=0.2、minPoints=5。

单击Start运行,OPTICS可视化窗口自动弹出,窗口包括Table和Graph两个标签,分别以表格和图形显示聚类结果。

下图的图形标签页中,峰值中间夹着的两个山谷,对应OPTICS找到的两个簇。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值