当前位置: 首页 > news >正文

【计量地理学】实验三 地理数据的基本统计分析

一、实验目的

本次实验的主要目的为,通过实验课上具体例子进行代码编写,掌握聚类分析算法的原理与基本思想,能够熟练地在Visual Stduio C#环境下,完成聚类分析的全部流程,包括数据标准化、绝对值距离计算、聚类操作等等,以提高自我对聚类分析算法的理解,加深对算法设计及程序编制的认识和掌握。

二、实验内容

1.数据极差标准化

2.绝对值距离计算

3.类之间的距离计算

4.聚类分析

三、实验过程

(一)数据极差标准化

数据极差标准化的代码如下图所示,实现极差标准化我们的方法为:首先通过遍历获得每一列中的最大值与最小值,接着,再次遍历数据矩阵的每一个元素,对每个元素进行极差标准化操作,即:对于矩阵中的每个元素 data[i, j],通过减去该列的最小值,然后除以该列的极差,即可得到数据标准化后的结果:

(二)绝对值距离计算

在上述步骤中得到数据标准化的结果后,各个数据便成为可以互相比较的存在了,我们即可开始计算数据集中任意两个数据间的距离,在如下所示的代码中,我们主要利用到的是C#中的Math.Abs()方法用以获取绝对值:

(三)类之间距离计算

在本程序中我们选择使用的是最短距离法来实现计算两个类之间的距离,具体代码如下图所示,首先第一个函数DisBtwTwoGroups()用于计算两个类之间的距离,具体原理为:遍历两个类中的所有数据点,然后计算每对数据点之间的距离,选择其中的最小值作为我们两个类之间的距离:

第二个函数CalDisMatrix()用于生成类与类之间的距离矩阵,其实现思想为:通过遍历所有的类组合,调用 DisBtwTwoGroups() 函数计算两个类之间的距离,并将结果填入距离矩阵中相应的位置,即可生成我们希望得到的距离矩阵:

(四)聚类分析

1.初始化每个对象为单独聚类:以上我们的准备工作就已经基本结束了,接下来我们正式进入此实验中最重要也是我认为最复杂的一个部分聚类分析部分,首先,为了更好地区分类与对象间的关系,我们先将每个对象初始化为单独的聚类如下代码所示:

2.循环合并距离最近的两个聚类:如下代码中,我们首先设定目标聚类数量(在此次实验中为1),并构建一个while循环,只要当前的聚类数量大于目标聚类数量,就继续执行循环,利用之前实验步骤中创建的计算聚类之间的距离矩阵,在每次迭代中找到距离最近的两个聚类并将它们合并,合并后将选中的两个对象从聚类列表中删除,而将新生成的聚类添加到聚类列表的末尾

3.输出每次循环合并的信息:为达到老师提出的实验效果,我们在while循环的最后补充一个循环用以输出每次聚类合并循环后的状态信息,它将输出每个聚类的编号以及其中包含的对象代码如下图所示:

四、实验结果

最后我们运行代码得到实验结果如下图所示,可以看到虽然类的顺序与老师结果有所不同(主要原因在于我们在添加新生成聚类时,使用的方法是:从聚类列表中删除选择聚类,将新生成聚类添加至最后),但每次聚类选择的对象结果完全符合,因此判断我们实验成功:

五、实验心得

在此次实验中我们结合具体例子深入学习了解了最短距离聚类法算法的基本原理与具体实现步骤,通过实验课上C#环境下代码的编写与理论课学习的内容相结合,我对方法的封装、C#编程语言的编写等都有了更为深入的认识,其中我认为收获最深也是最难的部分还是对聚类分析的核心思想的理解:在一个for循环中,我们不断地寻找最近聚类、合并聚类、更新聚类间的距离矩阵,并输出每次合并后的聚类结果,这就要求我们在编写代码中要有清晰的逻辑思维,时刻明白我们正在做什么,因此我将最后一个函数GroupDone的编写思路汇总如下:

相关文章:

  • Unity使用自定义类的List在Inspector面板上显示异常(2021.3.4)
  • Appium等待机制--强制等待、隐式等待、显式等待
  • 工具(十二):Java导出MySQL数据库表结构信息到excel
  • 使用DeepSeek完成一个简单嵌入式开发
  • Apache Tomcat漏洞,对其进行升级
  • 前端及后端实现csv文件下载功能
  • 鸿蒙Next开发与实战经验总结
  • MicroPython 智能硬件开发完整指南
  • 《网络应用监测:Netinside的助力企业网络运维》
  • 使用Beanshell前置处理器对Jmeter的请求body进行加密
  • Ubuntu20.04安装运行DynaSLAM
  • cocos creator 3.8如何在代码中打印drawcall,fps
  • 交换机HSRP与VRRP的全面深入对比
  • 在 Windows 系统下使用 VMware 安装 Ubuntu 24.04 LTS 系统
  • 【设计模式】建造者模式——工厂模式
  • 文件解析漏洞靶场解析全集详解
  • 一次ORACLE 10G数据库REDO LOG损坏报错的解决办法ORA-00354: corrupt redo log block header
  • 纳米压印技术制备AR眼镜的参考步骤
  • React-dnd 拖拽排序,指定拖拽触发节点,拖拽预览图
  • Python开发合并多个PDF文件
  • 广西壮族自治区政府主席蓝天立任上被查
  • 中期选举后第三势力成“莎拉弹劾案”关键,菲律宾权斗更趋复杂激烈
  • 全国省市县国土空间总体规划已基本批复完成,进入全面实施阶段
  • 恒生银行回应裁员传闻:受影响的员工数目占银行核心业务员工总数约1%
  • “三个集中”之后:图说浦东新区28次撤乡并镇
  • 南方降水频繁暴雨连连,北方高温再起或现40°C酷热天气