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

上传人:M****1 文档编号:469317608 上传时间:2023-09-18 格式:DOC 页数:15 大小:863KB
返回 下载 相关 举报
数据挖掘聚类算法课程设计报告_第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其中 a

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

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

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

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

6、der =null;FileReader fileReader =null;File dataFile =new File(this. fileName);if(dataFile.exists() /如果数据文件存在tryfileReader =new FileReader(this. fileNamebufferedReader =new BufferedReader(fileReader);String data =null;while(data = bufferedReader.readLine() !=if(isRightData(data)raw_dataSet.add(data);

7、);null) catch(Exception e) e.printStackTrace();elsethis. isFileExit=false;returnraw_dataSet; / getRaw_DataSet,从本地txt文件获取数据集publicArrayList getFinished_DataSet() /获取经过预处理,用来进行聚类的数据ArrayList finished_DataSet =new ArrayList();ArrayList temp_DataSet =this.getRaw_DataSet();for( inti = 0; i temp_DataSet.s

8、ize(); i+) ArrayList eachRomItem =null;eachRomItem =this.spilt(temp_DataSet.get(i),); /除去 ,后的每一行数据DataItem data_Item =new DataItem(eachRomItem,finished_DataSet.add(data_Item); / forreturnfinished_DataSet;true);publicbooleanisRightData(String data) ArrayList tempArrayList =tempArrayList = spilt(data,

9、 if(tempArrayList.size() = 1)returnfalse;returntrue; / isRightData,筛选出合适的数据);/筛选出合适的数据new ArrayList();publicArrayList spilt(String str,charArrayList words =new ArrayList();intbeginIndex = 0;for( inti = 0; i str.length(); i+) if(str.charAt(i) != ch) if(i != str.length() - 1)continue;ch) /用来存放找到的单词els

10、ewords.add(str.substring(beginIndex);elseString temp = str.substring(beginIndex, i);words.add(temp);beginIndex = i + 1; / forreturnwords;3. 聚类分析3.1算法描述本实验采用了聚类分析中常用的K 均值 (K-Means) 算法。该算法思想如下:算法: K 均值。用于划分的K 均值算法,每个簇的中心用簇中对象的均值表示。输入:k:簇的属目D:包含 n 个对象的数据集。输出: k 个簇的集合。方法:(1) 从 D中任意选择 k 个对象作为初始簇中心;(2)rep

11、eat(3)根据簇中对象的均值,将每个对象( 再 ) 指派到最相似的簇;(4)更新簇均值,既计算每个簇中对象的均值;(5)until不再发生变化根据上述算法,结合本实验实际情况和数据集特征给出程序的执行流程图:开始在数据集中随机选取 k 个数据对象作为初始中心点从本地读取数据文件迭代开始。将数据集中每个数据对象与 k 个中心点作比较,把每个对象分数据预处理到与其 最相似 的中心点所在的簇中输入 k,簇的个数计算每个簇中对象的均值,作为该簇新的中心点迭代终止,输出结果。是满足否图 2 程序执行流程针对上面的流程图,有几点说明:1. 数据预处理主要包括前述数据清理和数据变换,最终生成用于聚类分析的数据集。2. 簇的个数 k 由用户指定, k 越大聚类过程耗时越久。3. 图中“最相似”意思就是距离中心点距离最近,本实验中采用欧几里得距离,其定义如下:d (i, j) (xi1222x j1) (xi 2 x j 2). (xin x jn )其中 i( xi1 , xi 2 ,., xin ) 和 j(xj 1, xj 2 ,. xjn ) 是两个 n 维数据对象。在本实验中,xi 1 和 xj1 分别代表为 i,j 两个数据对象设置的字符串数组( 参看 2.2) 中下标为 1的元素值,此处n 为 68。4. 流程图中的终止条件指的是:前后两次中心点之

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

最新文档


当前位置:首页 > 行业资料 > 国内外标准规范

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