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

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

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.mfbz.cn/a/889125.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot在线教育平台:设计与实现的深度解析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

SQL进阶技巧:Order by 中 NULLS LAST特性使用?

目录 1 需求描述 2 数据准备 3 问题分析 4 小结 如果觉得本文对你有帮助,想进一步学习SQL语言这门艺术的,那么不妨也可以选择去看看我的博客专栏 ,部分内容如下: 数字化建设通关指南 专栏 原价99,现在活动价59…

ElasticSearch学习笔记(三)Ubuntu 2204 server elasticsearch集群配置

如果你只是学习elasticsearch的增、删、改、查等相关操作,那么在windows上安装一个ES就可以了。但是你如果想在你的生产环境中使用Elasticsearch提供的强大的功能,那么还是建议你使用Linux操作系统。 本文以在Ubuntu 2204 server中安装elasticsearch 8.…

MATLAB智能优化算法-学习笔记(4)——灰狼优化算法求解旅行商问题【过程+代码】

灰狼优化算法(Grey Wolf Optimizer, GWO)是一种基于灰狼社会行为的元启发式算法,主要模拟灰狼群体的捕猎行为(包括围攻、追捕、搜寻猎物等过程)。多旅行商问题(Multi-Traveling Salesman Problem, mTSP)是旅行商问题(TSP)的扩展,它涉及多个旅行商(车辆)从一个起点城…

使用AI编码,这些安全风险你真的了解吗?

前言 随着AI技术的飞速发展与普及,企业开发人员对AI编码助手工具如Copilot的依赖度日益增强,使用AI编码助手工具虽然能显著提升编程效率与质量,但同时也存在一系列的潜在风险。 许多开发人员可能未意识到,如果他们的现有代码库中…

CMSIS-RTOS V2封装层专题视频,一期视频将常用配置和用法梳理清楚,适用于RTX5和FreeRTOS(2024-09-28)

【前言】 本期视频就一个任务,通过ARM官方的CMSIS RTOS文档,将常用配置和用法给大家梳理清楚。 对于初次使用CMSIS-RTOS的用户来说,通过梳理官方文档,可以系统的了解各种用法,方便大家再进一步的自学或者应用&#x…

数据结构——七种排序(java)实现

文章目录 直接插入排序希尔排序选择排序冒泡排序快速排序归并排序计数排序 直接插入排序 思想: /*** 直接插入排序* 具有稳定性* 时间复杂度为:(计算时间复杂度的时候应计算执行次数最多的语句类,在直接插入排序中次数最多的语句…

Ajax ( 是什么、URL、axios、HTTP、快速收集表单 )Day01

AJAX 一、Ajax是什么1.1名词解释1.1.1 服务器1.1.2 同步与异步1. 同步(Synchronous)2. 异步(Asynchronous)3. 异步 vs 同步 场景4. 异步在 Web 开发中的常见应用: 1.2 URL 统一资源定位符1.2.1 URL - 查询参数1.2.2 ax…

maven打包常用命令

跳过tset打包 mvn package -Dmaven.test.skiptrue

什么是 ARP 欺骗和缓存中毒攻击?

如果您熟悉蒙面歌王,您就会明白蒙面歌王的概念:有人伪装成别人。然后,当面具掉下来时,您会大吃一惊,知道了这位名人是谁。类似的事情也发生在 ARP 欺骗攻击中,只是令人惊讶的是,威胁行为者利用他…

获取期货股票历史数据以及均线策略分析

【数据获取】银河金融数据库(yinhedata.com)能够获取国内外金融股票、期货历史行情数据,包含各分钟级别。 【搭建策略】均线策略作为一种广泛应用于股票、期货等市场的技术分析方法,凭借其简单易懂、操作性强等特点,深…

AI绘画Stable Diffusion WebUI 2个超好用的办法-实现图片光照调节,快速生成你想要的光感大片!

大家好,我是画画的小强 在摄影艺术中,灯光的运用对于照片的质量和情感表达至关重要。它不仅能够彰显主题,还能为画面增添深度与立体感,帮助传递感情,以及凸显细节之美。 下面,我将向大家展示如何用AI绘画…

【动态规划-最长公共子序列(LCS)】【hard】【科大讯飞笔试最后一题】力扣115. 不同的子序列

给你两个字符串 s 和 t ,统计并返回在 s 的 子序列 中 t 出现的个数,结果需要对 10^9 7 取模。 示例 1: 输入:s “rabbbit”, t “rabbit” 输出:3 解释: 如下所示, 有 3 种可以从 s 中得到 “rabbit”…

kafka创建多个分区时,分区会自动分配到多个不同的broker

1.分区只有一个时所有的消息生产和消费都集中在单个Broker上,多个broker只是提高了抗风险能力(因为副本存在不同的broker上,主节点挂掉,可以重新选取副本为主节点)。 2.没有消息顺序性要求可以多个分区,注意…

SpringBoot使用esayExcel根据模板导出excel

1、依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.3</version></dependency> 2、模板 3、实体类 package com.skybird.iot.addons.productionManagement.qualityTesting…

获取期货股票分钟级别数据以及均线策略

【数据获取】 银河金融数据库&#xff08;yinhedata.com&#xff09; 能够获取国内外金融股票、期货历史行情数据&#xff0c;包含各分钟级别。 【搭建策略】 均线策略作为一种广泛应用于股票、期货等市场的技术分析方法&#xff0c;凭借其简单易懂、操作性强等特点&#xf…

怎么高效对接SaaS平台数据?

SaaS平台数据对接是指将一个或多个SaaS平台中的数据集成到其他应用或平台中的过程。在当前的数字化时代&#xff0c;企业越来越倾向于使用SaaS平台来管理他们的业务和数据。然而&#xff0c;这些数据通常散布在不同的SaaS平台中&#xff0c;这对于企业数据的整合和分析来说可能…

Centos Stream 9备份与恢复、实体小主机安装PVE系统、PVE安装Centos Stream 9

最近折腾小主机&#xff0c;搭建项目环境&#xff0c;记录相关步骤 数据无价&#xff0c;丢失难复 1. Centos Stream 9备份与恢复 1.1 系统备份 root权限用户执行进入根目录&#xff1a; cd /第一种方式备份命令&#xff1a; tar cvpzf backup.tgz / --exclude/proc --exclu…

04-SpringBootWeb案例(中)

3. 员工管理 完成了部门管理的功能开发之后&#xff0c;我们进入到下一环节员工管理功能的开发。 基于以上原型&#xff0c;我们可以把员工管理功能分为&#xff1a; 分页查询&#xff08;今天完成&#xff09;带条件的分页查询&#xff08;今天完成&#xff09;删除员工&am…

CAN和CANFD如何转换和通信

随着科技的发展&#xff0c;汽车电子和工业领域中CAN通信需要承载数据量也越来越大&#xff0c;传统CAN通信有了向CANFD通信过渡的倾向。在实现过渡的过程中可能会出现自己设备是CAN通信&#xff0c;客户设备是CANFD通信的情况&#xff0c;或者自己设备是CANFD通信&#xff0c;…