收藏 分享(赏)

数据挖掘实验报告.pdf

上传人:精品资料 文档编号:10541361 上传时间:2019-11-27 格式:PDF 页数:11 大小:909.03KB
下载 相关 举报
数据挖掘实验报告.pdf_第1页
第1页 / 共11页
数据挖掘实验报告.pdf_第2页
第2页 / 共11页
数据挖掘实验报告.pdf_第3页
第3页 / 共11页
数据挖掘实验报告.pdf_第4页
第4页 / 共11页
数据挖掘实验报告.pdf_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、 哈尔滨工业大学 数据挖掘理论与算法实验报告 (2015年度 秋 季学期 ) 课程编码 S1300019C 授课教师 邹兆年 学生姓名 谢浩哲 学 号 15S103172 学 院 计算机科学与技术 学院 哈尔滨工业大学 Page 1 of 10 Designed by 谢浩哲 NOTE: 本报告 所涉及的全部代码均已在 GitHub 上开源 : https:/ 一、 实验 内容 NOTE: 各 算法的实现思想将在下一节阐述 . 1. K-Means K-means clustering is a method of vector quantization, originally from si

2、gnal processing, that is popular for cluster analysis in data mining. k-means clustering aims to partition n observations into k clusters in which each observation belongs to the cluster with the nearest mean, serving as a prototype of the cluster. 2. AGNES (层次 聚类 ) AGNES, known as Agglomerative Hie

3、rarchical clustering. This algorithm works by grouping the data one by one on the basis of the nearest distance measure of all the pairwise distance between the data point. Again distance between the data point is recalculated but which distance to consider when the groups has been formed? For this

4、there are many available methods. Some of them are: - Single-nearest distance or single linkage - Complete-farthest distance or complete linkage - Average-average distance or average linkage - Centroid distance - Wards method - sum of squared Euclidean distance is minimized 3. DBSCAN Density-based s

5、patial clustering of applications with noise (DBSCAN) is a data clustering algorithm. It is a density-based clustering algorithm: given a set of points in some space, it groups together points that are closely packed together (points with many nearby neighbors), marking as outliers points that lie a

6、lone in low-density regions (whose nearest neighbors are too far away). DBSCAN is one of the most common clustering algorithms and also most cited in scientific literature. 二、 实验设计 1. K-Means 算法 思想 : 任意选取点集 中的 k 个 点 作为 中心 , 对 每一个点与 k 个中心进行对比 , 划分 至以这 k 个中心为中心 点 的簇中 . 划分 结束后 , 重新 计算每一个簇的中心点 . 重复 以上过程

7、 , 直至 这些中心点不再变化 . 哈尔滨工业大学 Page 2 of 10 Designed by 谢浩哲 程序 流程图 : 核心 代码 : 1 public class KMeans 2 public Cluster getClusters(int k, Point points) 3 if ( k = points.length ) 4 return null; 5 6 7 Cluster clusters = getInitialClusters(k, points); 8 Cluster newClusters = null; 9 do 10 newClusters = getClu

8、sters(k, points, clusters); 11 12 if (isClustersTheSame(clusters, newClusters) 13 break; 哈尔滨工业大学 Page 3 of 10 Designed by 谢浩哲 14 15 clusters = newClusters; 16 while (true); 17 return clusters; 18 19 20 private Cluster getClusters(int k, Point points, Cluster cluster) 21 for ( int i = 0; i clusters)

9、3 while ( clusters.size() 1 ) 4 double minProximity = Double.MAX_VALUE; 5 int minProximityIndex1 = 0, minProximityIndex2 = 0; 6 7 for ( int i = 0; i getClusters(List points, int minPoints, double eps) 3 List corePoints = getCorePoints( points, minPoints, eps); 4 Map clusters = getClustersOfCorePoint

10、s(corePoints, eps); 5 6 List borderPoints = getBorderPoints(points, corePoints, minPoints, eps); 7 getClustersOfBorderPoints( corePoints, borderPoints, clusters, eps); 8 哈尔滨工业大学 Page 7 of 10 Designed by 谢浩哲 9 return new ArrayList(clusters.values(); 10 11 12 private List getCorePoints(List points, in

11、t minPoints, double eps) 13 List corePoints = new ArrayList(); 14 15 for ( int i = 0; i = minPoints ) 25 currentPoint.pointType = PointType.CorePoint; 26 corePoints.add(currentPoint); 27 28 29 return corePoints; 30 31 32 private Map getClustersOfCorePoints( List corePoints, double eps) 33 Map cluste

12、rs = new HashMap(); 34 35 for ( int i = 0; i corePoints.size(); + i ) 36 Point currentPoint = corePoints.get(i); 37 Point representPoint = null; 38 for ( int j = 0; j i; + j ) 39 Point anotherPoint = corePoints.get(j); 40 if ( currentPoint.isPointsInEpsCircle( anotherPoint, eps) ) 41 representPoint

13、= anotherPoint.representPoint; 42 currentPoint.representPoint = representPoint; 43 break; 44 45 46 if ( representPoint = null ) 哈尔滨工业大学 Page 8 of 10 Designed by 谢浩哲 47 currentPoint.representPoint = currentPoint; 48 clusters.put(currentPoint, new Cluster(currentPoint); 49 else 50 Cluster cluster = cl

14、usters.get(representPoint); 51 cluster.points.add(currentPoint); 52 53 54 return clusters; 55 56 三、 测试数据 1. K-Means 对于 K-Means, 程序 随机生成 均匀 分布的 二维坐标数据 , 其中 横纵坐标均在 0, 100范围 内 . 运行参数 : 坐标点 的个数 : n = 200 预期 的聚类数量 : k = 5 数据 样例 : 请参见 附件中的 KMeans/Runtime/input.txt 查看 具体 数据 . (16.38, 7.41), (39.14, 10.49),

15、 (66.43, 38.65), (44.11, 51.71), (66.99, 6.14), 2. AGNES (层次 聚类 ) 对于 AGNES, 程序 随机生成 k 个 圆形 簇的 二维坐标数据 . 对于每一个 簇 , 程序 随机生成 簇 的中心 以及小于 等于 24 的 半径 r. 对于 每一个簇 , 其中 点的数量被控制在 0, r2 + 64. 运行 参数 : 聚类 的 数量 : k = 2 数据 样例 : 请参见 附件中的 AGNES/Runtime/input.txt 查看具体 数据 . (16.38, 7.41), (39.14, 10.49), (66.43, 38.65)

16、, (44.11, 51.71), (66.99, 6.14), 3. DBSCAN 对于 DBSCAN, 程序 随机生成 k 个 圆形 簇的 二维坐标数据 . 对于每一个 簇 , 程序 随机生成 簇的 中心 以及小于 等于 24 的 半径 r. 对于 每一个簇 , 其中 点的数量被控制在 0, r2 + 64. 运行 参数 : 聚类 的 数量 : k = 3 被 认定为 CorePoint 周围 点的数量 : minPt = 5 被 认定为 CorePoint 搜索周围 点 的 半径 : Eps = 4 请参见 附件中的 DBSCAN/Runtime/input.txt 查看具体 数据 .

17、(16.38, 7.41), (39.14, 10.49), (66.43, 38.65), (44.11, 51.71), (66.99, 6.14), 哈尔滨工业大学 Page 9 of 10 Designed by 谢浩哲 四、 实验结果 1. K-Means 运行 参数 : n = 200, k = 5 2. AGNES (层次 聚类 ) 运行 参数 : k = 2 哈尔滨工业大学 Page 10 of 10 Designed by 谢浩哲 3. DBSCAN 运行 参数 : k = 3, minPt = 5, Eps = 4 NOTE: 图中 绿色点为 Core Point, 蓝色

18、点为 Border Point, 红色点 为 Noise Point. 五、 遇到的困难及解决方法、心得体会 K-Means 算法主要来说比较简单 . AGNES 算法 本身并不复杂 , 但 做可视化时的确用了很长的时间 , 现在 的解决方案是 , 每一秒 都将图中的一个类分裂成 2个 类 (感觉像 Bisecting K-Means), 以 展示 “ 层次 ” 聚类的过程 . DBSCAN 就 更复杂一些 , 并且 要在 时间 和空间 上找到 一个平衡点并非易事 . 一种占用 较大空间的解法是 , 对于 每一个点 , 程序 扫描其周围的点 , 并 将它们加入列表 (每个 点都 各自 维护一个 列表 ). 可以 想见 , 这样 的 空间 消耗 较大 . 现有 的实现方案是 , 先 扫描识别出Core Point, 根据 Core Point 找出周围的 Border Point, 剩下 的即为 Noise Point. 但是 这样需要有 2 次 扫描 , 时间复杂度 不如前者 . 总的 来说 , 这些实验让我 较好的了解 聚类算法 , 对于 不同算法的利弊也有了 更深刻 的认识 .

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报