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

news2024/10/4 1:03:52

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

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找到的两个簇。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2187136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年10月2日历史上的今天大事件早读

1683年10月2日 清朝康熙帝统一台湾 1869年10月2日 印度民族解放运动领袖甘地诞辰 1890年10月2日 中共创始人之一李达诞生 1895年10月2日 天津中西学堂(天津大学前身)开学 1901年10月2日 郑士良等发起惠州起义 1909年10月2日 京张铁路正式通车 1920…

国外电商系统开发-运维系统功能清单开发

一、最终效果图 二、功能清单 功能 描述 自定义日志绘图 根据Nginx、Apache登录日志文件绘图,绘图数据包括:访问量走势,500错误,200正确百分比等 创建服务器 加入服务器 主机状态自动检查 加入主机到系统后,系统…

【STM32】TCP/IP通信协议(2)--LwIP内存管理

五、LWIP内存管理 1.什么是内存管理? (1)内存管理,是指软件运行时对计算机内存资源的分配的使用的技术,其主要目的是如何高效、快速的分配,并且在适当的时候释放和回收内存资源(就比如C语言当…

前端规范工程-5:Git提交信息规范(commitlint + czg)

前面讲的都是在git提交之前的一些检查流程,然而我们git提交信息的时候,也应该是需要规范的。直接进入主题: 目录 需安装插件清单commitlint 介绍安装配置配置commit-msg钩子提交填写commit信息czg后续方式一:push触动build并上传…

行为设计模式 -观察者模式- JAVA

观察者模式 一.简介二. 案例2.1 抽象主题(Subject)2.2 具体主题(Concrete Subject)2.3 抽象观察者(Observer)2.4 具体观察者(Concrete Observer)2.5 测试 三. 结论3.1 优缺点3.2 使用…

从零开始讲PCIe(0)——外设与外设总线

一、外设 计算机外设(Peripheral)是指连接到计算机主机以扩展其功能的外部设备。这些设备可以是输入设备、输出设备、存储设备或通信设备等,外设(外围设备)通过输入、输出、存储和通信等方式帮助计算机与用户和其他设备…

用Arduino单片机读取PCF8591模数转换器的模拟量并转化为数字输出

PCF8591是一款单芯片,单电源和低功耗8位CMOS数据采集设备。博文[1]对该产品已有介绍,此处不再赘述。但该博文是使用NVIDIA Jetson nano运行python读取输入PCF8591的模拟量的,读取的结果显示在屏幕上,或输出模拟量点亮灯。NVIDIA J…

可解释聚类又“炸出圈”啦!把准3个切入点一路开挂!创新思路一学就会~

可解释聚类是机器学习领域一个非常重要的研究方向,它通过引入解释性强的特征和模型,让我们更直观地理解聚类结果,从而提升聚类分析的准确性和可靠性。 这种方法在一些敏感领域如医疗、金融等非常适用,因为它与传统方法不同&#…

工具模块及项目整体模块框架

文章目录 工具模块logger.hpphelper.hppthreadpool.hpp 核心概念核心API交换机类型持久化⽹络通信消息应答持久化数据管理中心模块虚拟机管理模块交换路由模块消费者管理模块信道管理模块连接管理模块Broker服务器模块消费者管理信道请求模块通信连接模块项⽬模块关系图 工具模…

Oracle SQL语句没有过滤条件,究竟是否会走索引??

答案是:可能走索引也可能不走索引,具体要看列的值可不可为null,Oracle不会为所有列的nullable属性都为Y的sql语句走索引。 例子: create table t as select * from dba_objects; CREATE INDEX ix_t_name ON t(object_id, objec…

MySQL 中的 GTID 复制详解

MySQL 中的 GTID 复制详解 在 MySQL 的复制架构中,GTID(Global Transaction Identifier)复制是一种重要的技术,它为数据库的复制提供了更强大的功能和更高的可靠性。本文将深入探讨 MySQL 中的 GTID 复制是什么,以及它…

OpenCV计算机视觉库

计算机视觉和图像处理 Tensorflow入门深度神经网络图像分类目标检测图像分割OpenCVPytorchNLP自然语言处理 OpenCV 一、OpenCV简介1.1 简介1.2 OpenCV部署1.3 OpenCV模块 二、OpenCV基本操作2.1 图像的基本操作2.1.1 图像的IO操作2.1.2 绘制几何图像2.1.3 获取并修改图像的像素…

时间相关数据的统计分析(笔记更新中)

对事件相关数据的统计思路做一个笔记 可以用作肿瘤生长曲线(Tumor Growth Curve)/某一个药物处理后不同时间点表型的获取类型的数据。 总体来说合适的有两类,一类是以ANOVA为基础的方差分析,重复测量资料的方差分析;…

D - Connect the Dots Codeforces Round 976 (Div. 2)

原题 D - Connect the Dots 思路 直接去做的话会超时, 因此用差分去优化 代码 #include <bits/stdc.h> using namespace std;int f[200020]; int z; int b[11][200020];// 并查集的 find 函数 int find(int x) {return f[x] ! x ? f[x] find(f[x]) : x; }// 检查是…

食品饮料小程序搭建私域会员管理

食品饮料是商超主要经营类目之一&#xff0c;多样化的品牌/厂商/渠道/经销商&#xff0c;客户在消费方面购物渠道和选择范围广&#xff0c;无论厂商还是线下门店/线上电商都需要围绕流量/会员开展生意获得更多营收。 小程序开店基于微信平台生态分享宣传、用户店铺方便购物及提…

Flutter与原生代码通信

文章目录 1. 知识回顾2. 示例代码3. 经验总结我们在上一章回中介绍了通道相关的内容,本章回中将介绍其中的一种通道:MethodChannnel.闲话休提,让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中介绍了通道的概念和作用,并且提到了通道有不同的类型,本章回将其中一…

【C++】类与对象基础概念解析

恭喜你学习完C语言与数据结构的有关内容&#xff0c;现在让我们开始进行对C的学习吧~ &#x1f49d;&#x1f49d;&#x1f49d;如果你对C语言或数据结构还存在疑惑&#xff0c;欢迎观看我之前的作品 &#x1f449;【数据结构】 &#x1f449;【C语言】 目录 一、引言 二、类…

【2024年最新】基于springboot+mysql就业信息管理系统

技术摘要 技术框架&#xff1a;以springboot作为框架&#xff0c;业务模式&#xff1a;B/S模式数据库&#xff1a;MySql作为后台运行的数据库服务器&#xff1a;使用Tomcat用为系统的服务器 系统展示 系统实现功能 本次实现一个就业信息管理系统&#xff0c;通过这个系统能够…

vscode安装及c++配置编译

1、VScode下载 VS Code官网下载地址&#xff1a;Visual Studio Code - Code Editing. Redefined。 2、安装中文插件 搜索chinese&#xff0c;点击install下载安装中文插件。 3、VS Code配置C/C开发环境 3.1、MinGW-w64下载 VS Code是一个高级的编辑器&#xff0c;只能用来写代…

嵌入式系统中qt开发 Qdebug输出中文的时候变成了问号 ??? bulideroot制作的根文件系统

嵌入式系统中qt开发 Qdebug输出&#xff1f;&#xff1f;&#xff1f; bulideroot制作的根文件系统 这个问题我找了三四天了&#xff0c;因为的字符也配置了 /etc/profile中qt的环境变量我也配置了 我的/usr/share/fonts也是有字库的&#xff0c;但是qt输出的中文全是&#…