最小公倍数算法

最小公倍数算法,第1张

(1)分解质因数法

先把这几个数的质因数写出来,最小公倍数等于它们所有的质因数的乘积(如果有几个质因数相同,则比较两数中哪个数有该质因数的个数较多,乘较多的次数)。

比如求45和30的最小公倍数。

45=335

30=235

不同的质因数是2,3,5。3是他们两者都有的质因数,由于45有两个3,30只有一个3,所以计算最小公倍数的时候乘两个3

最小公倍数等于2335=90

又如计算36和270的最小公倍数

36=2233

270=23335

不同的质因数是5。2这个质因数在36中比较多,为两个,所以乘两次;3这个质因数在270个比较多,为三个,所以乘三次。

最小公倍数等于223335=540

20和40的最小公倍数是40

(2)公式法

由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×[a,b]=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。

例如,求[18,20],即得[18,20]=18×20÷(18,20)=18×20÷2=180。求几个自然数的最小公倍数,可以先求出其中两个数的最小公倍数,再求这个最小公倍数与第三个数的最小公倍数,依次求下去,直到最后一个为止。最后所得的那个最小公倍数,就是所求的几个数的最小公倍数。

用桥连接

下面的自己对应数据源写

String driver = "sunjdbcodbcJdbcOdbcDriver";//声明桥驱动程序

String ds = "jdbc:odbc:student"; //student为数据源的名字

String user = "login"; //login就是数据源的登录名,

String login = "login"; //login就是数据库的密码

ClassforName(driver); //加载数据库驱动程序

Connection conn = DriverManagergetConnection(ds,user,login);

辛苦原创,请给分。

技术题:答:已知三个关系模式:

学生 S(S#,SNAME,AGE,SEX),其属性的含义为:学号,姓名,年龄,性别;

学习成绩 SC(S#,C#,GRADE) ,其属性的含义为:学号,课程号,成绩;

课程 C(C#,CNAME,TEACHER),其属性的含义为:课程号,课程名,教师。

(1)请用关系代数表达式描述查询:学号为‘S2’的学生所选课程的课程号。

答: Pi C#(Delta S#=‘S2’(S))其中Pi表示投影,Delta 表示选择

(2)完善下面的SQL语句片断。

答:

CREATE TABLE SC(

S# CHAR(10),

C# CHAR(10),

GRADE NUMBER(2),

primary key (S#,C#), /建立主码约束/

FOREIGN KEY REFERNCES S(S#), /在S#列上建立外码约束/

……

)

(3)用SQL查询块描述下列查询:

学生“李勇”所选选修的课程名。

答: SELECT CCNAME

FROM S, SC, C

WHERE S SNAME='李勇'

AND SS#=SCS#

AND CC#=SCC#;

统计每门课程的选课人数。

答:SELECT CCNAME, COUNT(SS#)

FROM SC, C, S

WHERE CC# = SCC#

AND SCS# = SS#

group by CCNAME;

在学生表中插入数据(‘1001’,‘王勇’,‘男’,19)

答:INSERT INTO S VALUES ('1001','王勇','男',19);

COMMIT;

安全题:

答:不加密的明文传送可能导致的所有后果包括数据的保密性、完整性、可用性、可控性、可查性等都可能遭到破坏,如**、丢失、不完整、泄密、破坏、篡改、替换等。

此问题解决措施可以采用文件安全加密传输。 安全传输的主要过程

(1)加密的过程 :不可抵赖性可非对称加密算法和HASH函数实现,即数字签名过程如下:

1) 使用HASH算法将主机A要发送的文件生成摘要

2) 利用主机A的私钥加密1中生成的摘要

(2)加密过程由对称密码算法实现:

1) 用对称密码算法对文件进行加密生成加密后的文件传输

2) 将数字签名、对称密码算法的密钥、加密后的文件打包在一起,使用主机B的公钥进行加密

3) 将生成的整个密文文件发送给主机B

(3)解密的过程

1) 主机B得到密文,使用自己的私钥解密,得到数字签名、对称密钥和加密后的文件

2) 主机B用对称密钥解密加密文件,再用HASH函数生成摘要

3) 主机B使用主机A的公钥验证数字签名的正确性(校验HASH散列值)

刘耀林 焦利民 刘洋

(武汉大学资源与环境科学学院,武汉,430079)

摘要:本文探讨了城镇土地分等基准地价平衡的技术路线、模型方法和系统设计思路,提出了系统的总体结构模式、功能模块划分、数据库构成和面向对象的系统类设计,并基于高级语言、GIS组件和数据库技术实现了该系统。实例表明,系统设计可行,效果较好,实用性强。

关键词:城镇土地分等;基准地价平衡;组件式;GIS

城镇土地分等是通过对影响城镇土地质量的经济、社会、自然等各项因素的综合分析,揭示城镇之间土地质量的地域差异,采用多因素综合评定方法判定城镇土地等别。城镇土地等反映城镇之间土地质量的总体差异,其序列在区域(如省)或全国范围内统一排列。基准地价平衡是在区域范围内,根据现有各城镇土地定级与基准地价平衡成果,在统一基准地价内涵、基准地价修正的基础上,对各城镇的基准地价进行平衡,建立区域内统一、协调的基准地价体系。目前我国城镇基准地价体系基本建立,但各城镇的基准地价由于技术方法、基准地价内涵等的不一致性,导致城镇之间基准地价的不可比性。开展城镇土地分等和基准地价平衡工作对于规范基准地价体系、发挥基准地价对土地市场的宏观调控作用有重要意义。

目前我国城镇土地分等研究主要集中在城镇土地分等的影响因素和分等方法等问题,采用城镇土地分等指导基准地价平衡并完成区域性实践研究的只有山东、福建等地,但并没有形成统一、成熟的基准地价平衡方法。上述研究大多也借助了计算机技术、GIS技术,但还没有设计开发相对独立、完整的城镇土地分等与基准地价平衡信息系统。本文提出了一套完整的城镇土地分等与基准地价平衡技术流程,并基于此开发了信息系统,同时以湖北省为例给出了系统应用实例。该系统 *** 作简便,功能较为完善,有助于提高工作效率以及结果的准确性和可靠性。

1 技术流程与方法分析

11 技术流程

城镇土地分等是对城镇土地质量的综合评定,对基准地价平衡起指导和控制作用。土地市场交易资料是土地市场情况的直观反映,可以作为土地分等与基准地价平衡的结果验证的参考依据。本文提出以城镇分等综合分值为控制、采用分段线性插值方法进行分类基准地价平衡、并以市场交易样点进行检验的技术路线。同时顾及下面两点:对于基准地价资料较老、无法通过简单修正而满足平衡条件的城镇,则基于补充调查样点进行基准地价更新;对土地分等和基准地价平衡结果采用多种方法进行验证和检验。具体的技术流程如图1。

图1 城镇土地分等与基准地价平衡技术流程

12 模型与方法

121 因素选取与权重确定

《城镇土地分等定级规程》(以下简称《规程》)中列出了较为全面的城镇土地质量影响因素,根据实地情况进行选取或补充,充分考虑因素影响显著性、区域差异性、可得性等,建立初始的因素因子体系。然后进行主成分分析,提取主成分,基本确定因素因子体系。最后通过召开专家论证会,广泛听取意见,最终确定城镇土地分等的因素因子体系。在进行系统设计时,提供较为全面的因素体系供用户选择,一级因素包括以下八大类:城镇区位、城镇集聚规模、城镇基础设施、城镇公用设施、城镇用地效率、城镇生态环境、区域经济发展水平、区域土地供应潜力。

权重确定可选用特尔菲法、层次分析法、因素成对比较法或灰关联度分析法等。

122 城镇土地分等

根据《规程》要求,城镇土地分等采用多因素综合评判法进行各级因素作用分和城镇综合分值的计算,采用数轴法和总分频率法进行城镇土地等的初步划分。而实际工作中,由于城镇数目较少,采用上述方法进行等别划分时效果并不理想,引入总分柱状图法,按照自然分段法(Natural Breaks)进行等别划分。

采用聚类分析法进行城镇土地分等,验证初始分等结果。将城镇作为聚类对象,将多因素综合评判计算的参评因素综合分值作为因子评分值,分等因素因子的权重作为聚类对象的总排序权重,加权计算聚类对象之间的距离,按距离进行聚类。这里采用欧式距离:

土地信息技术的创新与土地科学技术发展:2006年中国土地学会学术年会论文集

式中,Dij——第i个分等对象到第j个分等对象的欧氏距离;

Wk——第k个因子的总排序权重值;

Fik——第i个分等对象到第k个因素的评分值;

Fjk——第j个分等对象到第k个因素的评分值。

此外结合基准地价资料、市场交易资料和专家经验进行校验,对分等结果进行调整并最终确定城镇土地等别。

123 基准地价平衡

基准地价平衡的 *** 作对象是修正和规范后的城镇基准地价,如修正后统一到高值、中值、低值。平衡时一般针对高值进行,平衡后中值和低值按不变间距推算。基准地价平衡方法目前还没有国家规范可循,这里采用选取典型城镇作为控制点、根据分等综合分值进行分段线性插值的方法。平衡计算的基本公式为:

Pi=P0 -ΔNi(P0 -Pn)/(N0 -Nn)

式中,Pi——某城镇某用途基准地价高值的平衡结果;

P0——前控制点某用途基准地价高值;

Pn——后控制点某用途基准地价高值;

ΔNi——当前城镇与前控制点分等综合分值的差;

N0——前控制点的城镇土地分等综合分值;

Nn——后控制点的城镇土地分等综合分值。

2 系统结构与功能模块设计

21 系统结构

城镇土地分等与基准地价平衡信息系统采用组件式开发方式,高级语言采用VC+ +60,GIS组件采用MapObjects 21,属性数据库采用Micro Access 60进行管理。系统结构如图2。

图2 系统结构图

22 功能模块

按照软件结构化设计的原则,自顶向下逐步划分城镇土地分等与基准地价平衡信息系统的功能模块和子模块。

221 数据管理模块

该模块主要实现图层加入、图层显示控制、视图缩放浏览、视图导航等功能,并实现对空间数据和属性数据(分等因素调查数据表、基准地价调查表、修正系数表等)的一体化管理。

222 数据编辑模块

该模块主要实现图形数据(点、线、面)和属性数据的编辑处理。

223 因素体系和权重确定模块

该模块包括两个子模块。

因素选择子模块:实现用户初选因素因子体系、根据调查数据进行主成分分析、最终确定分等因子体系等功能。

权重确定子模块:实现因子权重的计算功能,包括特尔菲法、层次分析法、因素成对比较法、灰色关联度分析法。

224 城镇土地分等模块

该模块实现多因素综合评判法城镇土地分等和结果校验,包括三个子模块。

分等因素计算子模块:实现单因子分值计算(指标赋分加权求和法、位序法)、次级因素分值计算、一级因素分值计算和总分值计算。

等别划分子模块:根据各城镇分等总分值划分等别,包括总分频率法、数轴法和柱状图法。

等别校验子模块:实现聚类分析法城镇土地分等并与初始等别进行对比分析、等别的基准地价检验等。

225 基准地价平衡模块

该模块包括五个子模块。

基准地价更新子模块:对于基准地价成果不具有现势性(由于上次基准地价工作较早、城区范围扩大、城市建设迅速等原因)需要进行基准地价更新以满足平衡需要。

基准地价预处理与修正子模块:完成基准地价标准化(如将城镇基准地价统一到高、中、低三级)和基准地价修正(期日、年期、容积率、开发程度)。

基准地价平衡计算子模块:选择等别次序和基准地价次序相近、基准地价标准和市场实际情况一致性较高的典型城镇作为控制点;根据城镇土地分等总分值采用分段线性插值方法进行基准地价平衡。

基准地价平衡校验子模块:采用回归分析法、空间聚类分析法、空间插值法进行基准地价平衡检验。

基准地价控制幅度测算:实现各等别和各城镇基准地价控制幅度的测算。

226 数据输出模块

报表输出子模块:实现城镇土地分等和基准地价平衡成果表的格式输出功能。

图件输出子模块:实现城镇土地分等图件和基准地价平衡图件的输出功能。

发布数据转出子模块:将可用于公开发布的数据提取转出形成信息发布数据库。

3 系统数据库设计

31 数据组成

城镇土地分等与基准地价平衡数据库由空间数据库和调查表格数据库两大部分组成。空间数据库的主要内容是:基础地理数据,包括水系、交通、行政区划等;城镇土地分等与基准地价平衡单元图;各城镇商业、住宅、工业的市场交易调查样点分布图。调查表格数据库的主要内容是:分等因素因子调查表,包括前述八大类因素因子的调查表格;基准地价调查表,包括基准地价评估确定的商业、住宅、工业各级别基准地价、级别面积比例及基准地价内涵和相关参数,以及调查时点基准地价的执行标准;修正系数表,包括城镇基准地价评估时制定的期日、年期、容积率和开发程度修正系数表;交易样点调查表,包括城镇土地交易资料调查表、城镇商品住宅交易样点调查表等;基准地价更新样点调查表(仅对需要进行基准地价更新的城镇而言),包括土地使用权出租调查表、土地使用权出(转)让调查表、商品房出售调查表等。

32 空间数据组织

根据空间数据的用途(如基础地理数据、单元图、样点图等)分类,图层采用shape格式存储,通过MO组件进行访问和管理。单元图在视图中用行政区划结构树建立索引。

33 调查表格数据组织

将调查表格数据规范化,使之符合3 NF要求,并分类存储于Access数据库。系统通过ODBC与之交互。

34 空间数据和属性表格数据的关联

空间数据与属性表格数据之间通过关键字以自然连接方式关联。城镇土地分等与基准地价平衡单元图与分等因素因子调查表关联生成各分等因素图层。交易样点分布图与交易样点调查表关联生成交易样点地价图层。

综上所述,系统数据库结构可用图3表示。

图3 系统数据库结构图

4 系统类设计

城镇土地分等与基准地价平衡系统采用面向对象技术开发,系统类主要包括主程序框架类、视图类、文档类、工程管理相关类、土地分等因素体系及权重确定相关类、土地分等相关类、基准地价平衡相关类、基准地价更新及修正相关类、成果输出相关类。

类设计遵循开闭原则(扩展性方面是开放的而在更改性方面是封闭的)、替换原则(子类应当可以替换父类并出现在父类能够出现的任何地方)、依赖原则(与特定业务有关的依赖关系依赖接口和抽象类而不是具体类)、接口分离原则(尽量避免功能太多的服务接口类)。类、函数、变量的命名原则遵循一般的设计原则,尽量简洁、清晰,并具有良好的可区分性。

系统类关系如图4所示。

图4 系统类关系图

5 系统应用实例

城镇土地分等与基准地价平衡系统在湖北省取得了成功应用。湖北省共有84个城镇土地分等与基准地价平衡单位。基于该系统完成了因素选取、权重计算、土地分等、等别检验、基准地价平衡、平衡结果检验等工作,系统界面友好、 *** 作方便,结果符合实际。以下是系统部分功能的界面示例(图5~图8)。

图5 聚类分析图

图6

图7

图8

6 因素分值计算

采用聚类分析(图6)等方法与多因素综合评定法相互验证,保证了结果的可靠性。从图8可以看出,分段线性插值曲线与回归分析曲线在总体趋势上一致,但回归分析曲线在分值高端偏差较大,而分段线性插值更加灵活,在分值高端仍然能够与实际情况保持较高的一致性。市场交易样点地价也验证了这一点。

本文在《城镇土地分等定级规程》的基础上,提出了一个切实可行的城镇土地分等与基准地价平衡技术方案和系统设计方案,并基于高级语言、GIS组件(MO)和Accsss数据库实现了该系统。系统可以实现因素选取、权重确定、土地分等与基准地价平衡等功能,并提供了多种结果检验方法,保证了结果的准确性。实例表明,系统功能完善,实际应用效果较好,其中以分等为控制的分段线性插值基准地价平衡方法具有较高的实用性。

参考文献

国土资源部城镇土地估价规程北京:国土资源部,2001

严星,林增杰城市地产评估北京:中国人民大学出版社,1999

刘耀林土地信息系统北京:中国农业出版社,2002

李清石最新全国城市基准地价及土地评估业务手册北京:中国大地出版社,2004

《数据挖掘》实验指导书

2011年3月1日

长沙学院信息与计算科学系

前言

随着数据库技术的发展,特别是数据仓库以及Web 等新型数据源的日益普及,形成了数据丰富,知识缺乏的严重局面。针对如何有效地利用这些海量的数据信息的挑战,数据挖掘技术应运而生,并显示出强大的生命力。数据挖掘技术使数据处理技术进入了一个更高级的阶段,是对未来人类产生重大影响的十大新兴技术之一。因此加强数据挖掘领域的理论与实践学习也已成为专业学生的必修内容。

本实验指导书通过大量的实例,循序渐进地引导学生做好各章的实验。根据实验教学大纲,我们编排了五个实验,每个实验又分了五部分内容:实验目的、实验内容、实验步骤、实验报告要求、注意事项。在实验之前,由教师对实验作一定的讲解后,让学生明确实验目的,并对实验作好预习工作。在实验中,学生根据实验指导中的内容进行验证与总结,然后再去完成实验步骤中安排的任务。实验完成后,学生按要求完成实验报告。整个教学和实验中,我们强调学生切实培养动手实践能力,掌握数据挖掘的基本方法。

实验一 K-Means聚类算法实现

一、实验目的

通过分析K-Means 聚类算法的聚类原理,利用Vc 编程工具编程实现K-Means 聚类算法,并通过对样本数据的聚类过程,加深对该聚类算法的理解与应用过程。 实验类型:验证 计划课间:4学时

二、实验内容

1、分析K-Means 聚类算法; 2、分析距离计算方法; 3、分析聚类的评价准则;

4、编程完成K-Means 聚类算法,并基于相关实验数据实现聚类过程;

三、实验方法

1、K-means 聚类算法原理

K-means聚类算法以k 为参数,把n 个对象分为k 个簇,以使簇内的具有较高的相似度。相似度的计算根据一个簇中对象的平均值来进行。 算法描述:

输入:簇的数目k 和包含n 个对象的数据库

输出:使平方误差准则最小的k 个簇 过程:

任选k 个对象作为初始的簇中心; Repeat

for j=1 to n DO

根据簇中对象的平均值,将每个对象赋给最类似的簇 for i=1 to k DO 更新簇的平均值 计算E

Unitl E不再发生变化 按簇输出相应的对象

2、聚类评价准则: E 的计算为:E =

∑∑|x -x

i =1x ∈C i

k

i

|2

四、实验步骤 41 实验数据

P192:15

42初始簇中心的选择 选择k 个样本作为簇中心 For (i=0;i

For (j=0;j

ClusterCenter[i][j]=DataBase[i][j]

43 数据对象的重新分配

Sim=某一较大数;ClusterNo=-1;

For (i=0;i

If (Distance(DataBase[j],ClusterCenter[i])

ClusterNo=i;}

ObjectCluster[j]=ClusterNo;

44 簇的更新

For (i=0;i

{Temp=0;Num=0; For (j=0;j

If (ObjectCluster[j]==i){Num++; Temp+=DataBase[j];} If (ClusterCenter[i]!=Temp) HasChanged=TRUE; ClusterCenter[i]=Temp; }

45 结果的输出 For (i=0;i

Printf(“输出第%d个簇的对象:”,i); For (j=0;j

If (ObjectCluster[j]==i) printf(“%d ”,j); Printf(“\n”);

Printf(“\t\t\t 簇平均值为(%d,%d)\n”, ClusterCenter[i][0], ClusterCenter[i][1]); }

五、注意事项 1、距离函数的选择 2、评价函数的计算

实验二 DBSCAN算法实现

一、实验目的

要求掌握DBSCAN 算法的聚类原理、了解DBSCAN 算法的执行过程。在此基础上,利用DBSCAN 算法对给定样本数据实现聚类过程。

实验类型:综合 计划课间:4学时

二、实验内容

1、了解DBSCAN 算法的聚类原理; 2、了解DBSCAN 算法的执行过程; 3、编程实现DBSCAN 算法; 4、对给定样本数据实现聚类过程

三、实验方法

31、DBSCAN 算法的基本概念

● 对象的ε-邻域:给定对象在半径ε内的区域;

● 核心对象:若一个对象ε-邻域至少包含最小数目MinPts 个对象,则称该对

象为核心对象;

● 直接密度可达:给定一个对象集合D ,若p 是在q 的ε-邻域内,而q 是一个核

心对象,则称对象p 从对象q 出发是直接密度可达的;

● 密度可达:若存在一个对象链p1,p2, „,pn,p1=q,pn=p,对pi ∈D,pi+1是从pi

关于ε和MinPts 直接密度可达的,则称对象p 是从对象q 关于ε和MinPts 是密度可达的;

● 密度相连:若对象集合D 中存在一个对象o ,使得对象p 和q 是从o 关于ε和

MinPts 是密度可达的,则对象p 和q 是关于ε和MinPts 密度相连的; ● 噪声:一个基于密度的簇是基于密度可达性的最大的密度相连对象的集合,

不包含在任何簇中的对象被认为是噪声

32、实现的基本思想

通过检查数据集中每个对象的ε-邻域来寻找聚类。如一个点p 的ε-邻域包含多于MinPts 个对象,则创建一个p 作为核心对象的新簇。然后,DBSCAN 寻找从这些核心对象直接密度可达的对象,这个过程可能涉及一些密度可达簇的合并,当没有新的点可以被添加到任何簇时,聚类过程结束。

33 算法描述

输入:包含n 个对象的数据库,半径,最小数目MinPts; 输出:所有生成的簇,达到密度要求 过程: Repeat

从数据库中抽取一个未处理的点;

IF 抽出的点是核心点 THEN 找出所有从该店密度可达的对象,形成一个簇; ELSE 抽出的点是边缘点(非核心对象) ,跳出本次循环,寻找下一点; Until 所有点都被处理

四、实验步骤 41 数据结构的分析 Struct List

{Int data[TOTALPOINT]; Int head=0; Int tail=-1;} List ClusterList; Struct Node

{ int Attribute1; int Attribute2} Node DataBase[TOTALPOINT];

Boolean Neighbor[TOTALPOINT][TOTALPOINT]; Int ClusterNo[TOTALPOINT];

42 实验数据 P186 表5-8

43 计算临近

For (i=0;i

For (j=0;j

If (dist(DataBase[i],DataBase[i])

44 聚类划分 CurrentClusterNO=0; For (i=0;i

NeighborPointsNum=0;

for (j=0;j

if (Neighbor[i][j]==true)NeighborPointsNum++; if (NeighborPointsNum)>=MinPts {

// 记录邻居中已被划分的簇号 ClusterListtail=-1; ClusterListhead=0; For (j=0;j

If (Neighbor[i][j]==true) &&(ClusterNo[j]>0)

Then {ClusterListtail++;

ClusterListdata[tail]=ClusterNo[j]} // 当前核心对象的邻居对象划分为一簇 For (j=0;j

ClusterNo[j]=CurrentClusterNO;

// 将多个簇合并

While ClusterListhead

If (ClusterNo[j]==ClusterListdata[head]) ClusterNo[j]=CurrentClusterNO;

ClusterListhead++; } } }

45 聚类结果输出

For (i=-1;i

Printf(“\n输出第%d簇的对象:”,i); For (j=0;j

If (ClusterNo[j]=i) printf(“%d\t”,j); }

五、注意事项 51 噪声数据的处理

52 已划分的类存在直接密度可达时的相关类数据的合并

实验三 ID3算法实现

一、实验目的

通过编程实现决策树算法,信息增益的计算、数据子集划分、决策树的构建过程。加深对相关算法的理解过程。 实验类型:验证 计划课间:4学时

二、实验内容

1、分析决策树算法的实现流程;

2、分析信息增益的计算、数据子集划分、决策树的构建过程; 3、根据算法描述编程实现算法,调试运行; 4、对课后P161的第10题进行验算,得到分析结果。

三、实验方法

算法描述:

以代表训练样本的单个结点开始建树;

若样本都在同一个类,则该结点成为树叶,并用该类标记;

否则,算法使用信息增益作为启发信息,选择能够最好地将样本分类的属性; 对测试属性的每个已知值,创建一个分支,并据此划分样本; 算法使用同样的过程,递归形成每个划分上的样本决策树 递归划分步骤,当下列条件之一成立时停止: 给定结点的所有样本属于同一类;

没有剩余属性可以进一步划分样本,在此情况下,采用多数表决进行

四、实验步骤

1、算法实现过程中需要使用的数据结构描述: Struct

{int Attrib_Col; // 当前节点对应属性 int Value; // 对应边值 Tree_Node Left_Node; // 子树

Tree_Node Right_Node // 同层其他节点 Boolean IsLeaf; // 是否叶子节点 int ClassNo; // 对应分类标号 }Tree_Node;

2、整体算法流程 主程序:

InputData();

T=Build_ID3(Data,Record_No, Num_Attrib); OutputRule(T); 释放内存; 3、相关子函数: 31、 InputData()

{

输入属性集大小Num_Attrib; 输入样本数Num_Record;

分配内存Data[Num_Record][Num_Attrib];

输入样本数据Data[Num_Record][Num_Attrib]; 获取类别数C(从最后一列中得到); }

32、Build_ID3(Data,Record_No, Num_Attrib)

{

Int Class_Distribute[C];

If (Record_No==0) { return Null }

N=new tree_node();

计算Data 中各类的分布情况存入Class_Distribute Temp_Num_Attrib=0;

For (i=0;i

If (Data[0][i]>=0) Temp_Num_Attrib++; If Temp_Num_Attrib==0 {

N->ClassNo=最多的类; N->IsLeaf=TRUE;

N->Left_Node=NULL;N->Right_Node=NULL; Return N;

}

If Class_Distribute中仅一类的分布大于0 {

N->ClassNo=该类; N->IsLeaf=TRUE;

N->Left_Node=NULL;N->Right_Node=NULL; Return N; }

InforGain=0;CurrentCol=-1;

For i=0;i

TempGain=Compute_InforGain(Data,Record_No,I,Num_Attrib); If (InforGain

{ InforGain=TempGain; CurrentCol=I;} }

N->Attrib_Col=CurrentCol;

//记录CurrentCol 所对应的不同值放入DiferentValue[]; I=0;Value_No=-1; While i

For (k=0;k

if (DiferentValu[k]=Data[i][CurrentCol]) flag=true; if (flag==false)

{Value_No++;DiferentValue[Value_No]=Data[i][CurrentCol] } I++; }

SubData=以Data 大小申请内存空间; For (i=0;i

k=-1;

for (j=0;j

if (Data[j][CurrentCol]==DiferentValu[i]) {k=k++;

For(int i1=0;i1

If (i1CurrentCol)SubData[k][i1]=Data[j][i1]; Else SubData[k][i1]=-1; }

N->Attrib_Col=CurrentCol; N->Value=DiferentValu[i]; N->Isleaf=false; N->ClassNo=0;

N->Left_Node=Build_ID3(SubData,k+1, Num_Attrib); N->Right_Node=new Tree_Node; N=N->Right_Node; } }

33、计算信息增益

Compute_InforGain(Data,Record_No, Col_No, Num_Attrib)

Int DifferentValue[MaxDifferentValue]; Int Total_DifferentValue;

Int s[ClassNo][MaxDifferentValue];

s=0;// 数组清0;

Total_DifferentValue=-1; For (i=0;i

J=GetPosition(DifferentValue,

Total_DifferentValue,Data[i][Col_no]); If (j

DifferentValue[Total_DifferentValue]=Data[i][Col_no]; J=Total_DifferentValue;}

S[Data[i][Num_Attrib-1]][j]++; }

Total_I=0;

For (i=0;i

Sum=0;

For(j=0;j

For (i=0;i

{ temp=0;sj=0; //sj是数据子集中属于类j 的样本个数; For (j=0;j

For (j=0;j

EA+=sj/Record_NoCompute_PI(s[j][i]/sj); }

Return total_I-EA; }

34、得到某数字在数组中的位置 GetPosition(Data, DataSize,Value) {

For (i=0;i

35、计算PiLogPi

Float Compute_PI(float pi) {

If pi=1 then return 0; Return 0-pilog2(pi); }

五、实验报告要求

1、用C 语言实现上述相关算法。

2、实验 *** 作步骤和实验结果,实验中出现的问题和解决方法。

六、注意事项

1、信息增益的计算;

2、选择相关字段后根据相关字段的取值对数据集合进行划分。 3、决策树构建的终止条件

实验四 贝叶斯算法实现

一、实验目的

通过对贝叶斯算法的编程实现,加深对贝叶斯算法的理解,同时利用贝叶斯算法对简单应用实现预测分类 实验类型:验证 计划课间:4学时

二、实验内容

1、分析贝叶斯算法; 2、计算条件概率; 3、预测精度的计算与评估;

4、编程实现贝叶斯分类算法,并对简单应用样本数据实现预测分类

三、实验方法

1、 实现贝叶斯算法

2、 利用实验数据对贝叶斯算法进行检测 3、 求解精确度计算 4、 调试程序

5、 完成整个分类与评估的过程

四、实验步骤

41 算法过程描述:

1)输入训练数据,将数据保存在DataBase 二维数组中(数组的最后一个属性对应类别标号) 2)设定训练数据集与测试数据集大小(指定从数组下标0开始到TrainSetSize-1所对应的数据为训练数据,其余为测试数据) ;

3)计算训练数据集数据中各属性在各类中的概率分布情况; 4)利用测试数据计算贝叶斯算法的分类精度; 5)输出分类结果; 42 数据处理

B、对数据中的枚举类型数据进行转换以便于数据处理:

43 计算训练数据集数据中各属性在各类中的概率分布情况如图3-1所示 44 利用测试数据计算贝叶斯算法的分类精度如图3-2所示

图3-1 训练数据集各属性的概率分布计算

图3-2 贝叶斯算法的分类精度计算

45 输出分类结果

For (i=0;i

For (j=0;j

printf(“\n\nTotal Correct is%d”,TotalCorrect);

五、注意事项

注意单个样例数据的概率计算与各字段的概率计算的关系

实验五 Apriori算法实现

一、实验目的

1、掌握Apriori 算法对于关联规则挖掘中频繁集的产生以及关联规则集合的产生过程; 2、根据算法描述编程实现算法,调试运行。并结合相关实验数据进行应用,得到分析结果。 数据和删除数据的 *** 作。 实验类型:验证 计划课间:2学时

二、实验内容

1、频繁项集的生成与Apriori 算法实现;

2、关联规则的生成过程与Rule-generate 算法实现; 3、结合样例对算法进行分析;

三、实验步骤

编写程序完成下列算法: 1、Apriori 算法

输入: 数据集D ;最小支持数minsup_count; 输出: 频繁项目集L L1={large 1-itemsets} For (k=2; Lk-1≠Φ; k++)

Ck=apriori-gen (Lk-1); // Ck是k 个元素的候选集 For all transactions t∈D do

begin Ct=subset(Ck,t); //Ct是所有t 包含的候选集元素 for all candidates c ∈Ct do ccount++; end

Lk={c ∈Ck| ccount ≧ minsup_count } End L=∪Lk;

2、apriori-gen (Lk-1) 候选集产生算法 输入: (k-1)-频繁项目集Lk-1 输出: k-频繁项目集Ck

For all itemset p∈Lk-1 do For all itemset q∈Lk-1 do

If pitem1=qitem1, pitem2=qitem2, …,pitemk-2=qitemk-2, pitemk-1

if has_infrequent_subset(c, Lk-1) then delete c else add c to Ck End Return Ck

3、has_infrequent_subset(c, Lk-1) 功能:判断候选集的元素

输入: 一个k-频繁项目集Lk-1 ,(k-1)-频繁项目集Lk-1 输出:c 是否从候选集中删除的布尔判断 For all (k-1)-subsets of c do If Not(S∈Lk-1) THEN return TRUE; Return FALSE;

4、Rule-generate(L,minconf) 输入:频繁项目集;最小信任度 输出:强关联规则 算法:

FOR each frequent itemset lk in L generules(lk,lk);

5、Genrules 递归算法:

Genrules(lk:frequent k-itemset, xm:frequent m-itemset) X={(m-1)-itemsets xm-1 | xm-1 in xm}; For each xm-1 in X

BEGIN conf=support(lk)/support(xm-1); IF (conf≧minconf) THEN

长沙学院信息与计算科学系 数据挖掘实验指导书

BEGIN

输出规则:xm-1->(lk-xm-1),support,confidence;

IF (m-1)>1) THEN genrules(lk,xm-1);

END;

END;

结合相关样例数据对算法进行调试,并根据相关实验结果对数据进行分析,

四、实验报告要求

1、用C 语言实现上述相关算法。

2、实验 *** 作步骤和实验结果,实验中出现的问题和解决方法。

五、注意事项

1、集合的表示及相关 *** 作的实现;

2、项目集的数据结构描述;

第21页

PI服务器软件是用于现场生产数据的采集和存储;PI客户端软件提供对实时/历史数据的二次应用;接口软件实现现场不同控制系统和PI系统的连接。PI 服务器软件1 PI-UDSPI系统的基本包PI-UDS包括系统的网络管理、应用程序接口管理、事件管理、ODBC服务、以及Module Database(模块化数据库)等。这些应用程序以后台服务的方式运行。2 PI-SVRAPPPI-SVRAPP包括一系列的后台应用服务程序,如执行计算(PE)、报警服务、批处理服务、SQC顺序质量控制服务等。u 执行计算(PE)模块描述执行计算服务模块允许用户不必用高级语言来实施复杂的计算功能。该模块可允许用户生成计算公式,使用简单的代数算式,并将之存入库中多次使用。状态方程包的计算结果可以象PI系统任意一个工位号一样存入数据档案。状态方程包可以直接与用C或Fortran写成的外部功能连接。大多数PI系统都有状态方程包。实施/应用执行计算(PE)模块可使工程师进行诸如流体特性、过程单元模型等计算。PE也可写出数据表达式用以计算从仪表中不能立即得到而必需通过计算才可得到的值,如流量补偿,正确的温度等。u 报警服务模块描述报警服务模块可对PI系统中任何一个工位号进行报警条件设置,如:高限报警、低限报警、偏差报警或ROC(数值大小变化率)报警。这些报警可送到PI系统中的事件档案中,用户可以筛选和查看报警条件。实施/应用用户接受的报警是那些已设置报警条件的工位号,在超过了最大值、最小值、ROC值或数据源没有发送数据时就会报警。这些报警消息有助于用户解决引起报警的原因。PI系统能够在服务器端敏感地探觉报警条件并通过触发一个动作来响应,如启动一个应用或给用户发送一个E-Mail(电子邮件)。u 批处理模块描述批处理模块是以一个批量前后关系来存储和读取PI系统的数据,而不是单纯以时间轴为依据。批量记录建立时,包括一些批量信息,如:批量记录数、批量标识、产品标识和单元名称等,查询功能将允许用户对感兴趣的批量进行查询。PI批处理模块也支持单元别名,例如,用户可指定一个画面显示温度、压力、组分,PI系统依据别名选定的适合的物理工位号并从相应的时间序列的批量里读取数据。实施/应用批处理模块正在许多工业的批量应用中得到应用。如:有一定顺序步骤的应用,炉子的开和停。在这类应用中,用户可决定是否启动这一顺序步骤。u SQC顺序质量控制模块描述顺序质量控制模块SQC是辨别随机波动和过程变化的一门技术。这些技术可作为过程优化的一种方法,如:设定目标、限额、产品限制等。在很多工业领域,SQC的实施已取得了很大的经济效益。但是,由于在实施过程中涉及到大量的数据及众多复杂计算和趋势分析,因而使该应用受到了很大的限制。顺序质量控制模块可在指定的时间周期里,对大量的采集样本进行在线计算,并把这些运算结果及相应的控制限、报警状态存入PI数据库。实施/应用顺序质量控制模块所能进行的SQC计算包括:平均值、移动平均值、几何图形平均值、极差、标准偏差、移动标准偏差、不合格品百分比、不合格品数量、缺陷数、单元累积缺陷数等。3 PI-DSPI-DS(Data Archive)是PI系统的数据存储模块。数据档案是OSIsoft软件公司时间序列的数据库,其中包括装置的过程信息、压力、流量、温度、设定点、开/关等数据的存储。通过PI快照功能(Snapshot),用户及其应用可以从数据源得到大多数最近的数据值。PI 客户软件模块OSIsoft软件公司基于微软平台的客户端软件工具使用户很方便地以不同格式从PI里读取数据。这些工具使不同的用户在相同数据库里看到各自关心的信息。每个人都有各自的画面、报告和分析功能,以满足不同需要,以下是一些主要的客户端软件介绍。1PI-Process Book(PI-PB)描述Process Book是一个图形用户界面接口,用户可建立各类画面,包括:趋势图、图素、值、棒图和其他动态图形。Process Book目的是让电厂的每一个人员在自己的桌面以一本书的方式建立起自己的生产运行和管理画面。实施/应用Process Book是PI系统中两个主要的用户界面软件之一,用户可决定如何建立自己的书,标记章节用于划分过程段,热键按钮用于入画面或激活其他应用。Process Book支持ODBC、ActiveX、VBA等微软最新的技术。2PI-Datalink (PI-PC)描述Datalink在PI系统和常用的微软的电子表格(Excel)之间提供生产数据的动态连接。它是在电子表格端通过在菜单条和对话框上使用“加入”功能实现的。用户能很方便、快捷的用PI系统的实时和历史数据填充电子表格,而不需要复杂的“导入”功能。实施/应用PI-Datalink是PI系统中第二个主要的用户界面软件,工厂里每个人都可用PI-Datalink和电子表格做数据分析和生成报告。可把工作单存起来,作为一个平台。以后把它读出来后,只要在单元日期上改动日期,工作单上的数据就会自动改变。除原始数据外,还可读出经过PI系统二次计算处理过的分析数据。3PI应用程序开发接口(PI-API/SDK)描述PI 应用程序开发接口提供一个通用的程序接口访问PI系统中的数据。API/SDK给用户提供了一个自己编程访问PI系统信息的路径。实施/应用OSI公司目前提供使用API函数的平台有:Microsoft Windows、Windows NT在Intel和AXP、HP-UX、IBM AIX 、SUN Solaris、DEC 的Alpha Unix平台。API 是一组可以调用PI数据库的函数,用户可用它写应用程序,读或写PI数据库。很多用户应用API把数据送入已有的应用中去,比如:性能监视或数据整合。目前,API/SDK的很多应用是在MS-Windows下与Visual Basic一起建立交互的客户端画面。4ODBC客户端(PI-ODBC-PC)描述PI-ODBC-PC允许用户使用标准的ANSI SQL调用,即使用ODBC访问PI数据库。实施/应用PI-ODBC-PC是客户端应用调用PI服务器中的SQL模块。它使用用户熟悉的读取关系数据库中数据的方法来读取PI中的数据。任何依从SQL调用的客户端均可以使用PI-ODBC-PC,它能使使用MIS系统的人穿透式读取过程数据而不用复制数据。5PI批处理客户端(PI-BAV)描述PI 批处理客户端允许依据批量的相应关系查看PI中的数据。ProcessBook以及其他的用户开发应用中都可以支持批处理控件的功能。6PI SQL Charts(PI-SQL)描述PI SQL是客户端的一个应用,它允许用户在ProcessBook内查看PI SQL的计算。7PI Profile Displays(PI-PRD)描述PI Profile Displays是一个客户端的应用,它允许用户以概括形式,诸如Cross-Direction,Machine Direction,平面图和三维映射查看PI的数据,具有同时显示多个扫描信息的能力。8PI ActiveView描述PI ActiveView是一个WEB客户端的应用,它允许用户将ProcessBook中生成的画面在通用的浏览器中进行发布。PI 接口软件OSIsoft软件公司作为独立的第三方软件供应商,目前可以提供多达300多种和不同控制系统的接口,包括所有主流DCS厂家、不同PLC厂家、LIMS厂家不同时期产品的标准接口。此外,PI系统还提供支持工业标准的数据通讯接口,如OPC、Modbus等等。PI系统的接口一般都通过PI API节点机来实现,节点机的主要工作是作为一个数据源的扫描节点。节点机有数据缓存的功能,即在主接点PI服务器与节点机之间因软件、硬件升级等原因引起离线时,节点机可把采集的现场数据暂存起来,等到主节点PI服务器恢复正常运行后,再把缓存队列中数据传送到PI服务器数据库中,从而不丢失采集的数据。

以上就是关于最小公倍数算法全部的内容,包括:最小公倍数算法、如何用java访问PI数据库,并将某些测点值以表格的形式保存下来、计算机专业高手帮解两道题,信息安全和数据库技术等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10139383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存