数据挖掘聚类算法课程设计报告

上传人:m**** 文档编号:564715077 上传时间:2023-03-16 格式:DOCX 页数:15 大小:72.77KB
返回 下载 相关 举报
数据挖掘聚类算法课程设计报告_第1页
第1页 / 共15页
数据挖掘聚类算法课程设计报告_第2页
第2页 / 共15页
数据挖掘聚类算法课程设计报告_第3页
第3页 / 共15页
数据挖掘聚类算法课程设计报告_第4页
第4页 / 共15页
数据挖掘聚类算法课程设计报告_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《数据挖掘聚类算法课程设计报告》由会员分享,可在线阅读,更多相关《数据挖掘聚类算法课程设计报告(15页珍藏版)》请在金锄头文库上搜索。

1、数据挖掘聚类问题(Plants Data Set )实验报告1. 数据源描述1.1 数据特征本实验用到的是关于植物信息的数据集,其中包含了每一种植物(种类和科属)以及 它们生长的地区。数据集中总共有68 个地区,主要分布在美国和加拿大。一条数据(对 应于文件中的一行)包含一种植物(或者某一科属)及其在上述 68 个地区中的分布情况。 可以这样理解,该数据集中每一条数据包含两部分内容,如下图所示。图 1 数据格式例如一条数据:abronia fragrans,az,co,ks,mt,ne,nm,nd,ok,sd,tx,ut,wa,wy。其 中abronia fragrans是植物名称(abron

2、ia是科属,fragrans是名称),从az 直到 wy 是该植物的分布区域,采用缩写形式表示,如 az 代表的是美国 Arizona 州。植物 名称和分布地区用逗号隔开,各地区之间也用逗号隔开。1.2 任务要求聚类。采用聚类算法根据某种特征对所给数据集进行聚类分析,对于聚类形 成的簇要使得簇内数据对象之间的差异尽可能小,簇之间的差距尽可能大。2. 数据预处理2.1 数据清理所给数据集中包含些对聚类过程无用的冗余数据。数据集中全部数据的组 织结构是:先给出某科属的植物及其所有分布地区,然后给出该科属下的具体 植物及其分布地区。例如: abelmoschus,ct,dc,fl,hi,il,ky,

3、l a,md,mi,ms,nc,sc,va,pr,vi abelmoschus esculentus,ct,dc,fl 川,ky,l a,md,mi,ms,nc,sc,va,pr,vi abelmoschus moschatus,hi,pr上述数据中第行给出了所有属于abelmoschus这一科属的植物的分布地 区,接下来的两行分别列出了属于abelmoschus科属的两种具体植物及其 分布地区。从中可以看出后两行给出的所有地区的并集正是第一行给出的地区集 合。在聚类过程中第行数据是无用的,因此要对其进行清理。2.2数据变换本实验是依据植物的分布区域进行聚类,所给数据集中的分布区域是字符串 形

4、式,不适合进行聚类,因此将其变换成适合聚类的数值形式。具体思想如下:数据集中总共包含68个区域,每一种植物的分布区域是这68个区域中的 一部分。本实验中将68个区域看成是数据对象的68个属性,这68个属性是二 元类型的变量,其值只能去 0 或者1。步骤如下:1把68个区域按一定顺序存放在字符串数组(记为str)中(顺序可以自己定, 确定后不能改变)。2为数据集中的每个数据对象设置一个长度为68字符串数组,初始元素值 全为0。将数据对象的分布区域逐个与str中的所有元素比较。如果存在于str中 下标i的位置,就将该数据对象的字符串数组的第i位置为1。例如,一个数据对象为:abies fraser

5、i,ga,nc,tn,va。其分布区域包含 ga,nc,tn和va四个地区,将这四个地区逐个与str中全部68个元素比较。假 设这四个地区分别存在于str中的第0,123位置,则将为该数据对象设置的字符 串数组中第0,1,2,3位置全部置为1。数据预处理代码(包括数据清理和数据变换):public ArrayLis t get Raw_Da taSe t() ArrayList raw_dataSet = new ArrayList();/ 定义集合存储从本地 获取的数据BufferedReader bufferedReader = n ull;FileReader fileReader =

6、n ull;File dat aFile = new File(this.fileName);if (dataFile.exists() /如果数据文件存在try fileReader = new FileReader(this.fileName);bufferedReader = new BufferedReader(fileReader);String data = n ull;while (da ta = bufferedReader.readL in e() != n ull) if (isRigh tDat a(da ta)raw_da taSe t. add(da ta); cat

7、ch (Exception e) e.pri ntSt ackTrace(); elsethis.isFileExit = false;retur n raw_da taSe t;/ getRaw_DataSet,从本地址文件获取数据集public ArrayList getFinished_DataSet() / 获取经过预处理,用来进行聚类 的数据ArrayLis t fin ished_Da taSe t = new ArrayLis t();ArrayLis t t emp_Da taSe t = this.ge tRaw_Da taSe t();for (int i = 0; i t

8、 emp_Da taSe t.size(); i+) ArrayLis t eachRomi tem = n ull;eachRomitem = this.spilt(temp_DataSet.get(i),);/ 除去,”后的每一行数据Dataitem data_item = new Dataitem(eachRomitem, true);fi nished_Da taSe t. add(da ta_it em);/ forreturn fin ished_Da taSe t;public boolean isRightData(String data) / 筛选出合适的数据ArrayLis

9、 t t empArrayList = new ArrayLis t();tempArrayList = spilt(data,);if (tempArrayLis t. size() = 1)return false;return true;/ isRightData,筛选出合适的数据public ArrayList spilt(String str, char ch) ArrayList words = newArrayList();/ 用来存放找到的单词int beg inin dex = 0;for (int i = 0; i J Cluster.java,Dataltem.java-

10、T| Mairijava 国 Read Data .java S Tools.javaB JRE System Library jdkl.7图 3 代码文件的组织结构上图是本实验源码的组织结构,该项目包含五个Java类。每个类的功能描述如下:Cluster.java类该类定义了簇的结构,包含簇标志,簇成员和簇中心点三个字段。该类的每一个实例对应于聚类过程中的一个簇。Dataltem.java类 该类定义了数据对象的结构,主要包含数据对象名称(即植物名称)和数据对象字符串数组(即植物的分布区域)。该类的每一个实例对应于数据集中的一个数据对象。Main.java类 该类是程序的核心类,主要功能是执

11、行聚类过程,包括中心点的选 取与更新,计算各个数据对象与中心点之间的距离并把其派分到最相似的簇等。ReadData.java 类 该类主要功能是生成聚类过程适用的数据集,包括读取文件, 数据预处理等。Tools.java 类 该类是一个工具类,其中定义了多个程序中使用到的静态方法。Mian.java 类中的核心代码:(1) 随机选取中心点public void setCenter_ran() /第一次,从数据集中随机选取中心点begi nTime = Sys tem.currentTimeMilli$);Sys tem.out.pri ntln (聚类过程开始,开始于:+ Tools.currentTime();Ran dom ran = new Ran dom();int order = 0;/随机选取中心点while (this.center.size() numOfCluster) order = ran.nextlnt(t oBeProcessed .size();if (Tools.i

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号