当前位置:文档之家› 20131910084-陈国静-实验4--Chimerge技术

20131910084-陈国静-实验4--Chimerge技术

云南大学数学与与统计学院

上机实践报告

课程名称:数据挖掘年级:2013上机实践成绩:

指导教师:彭程姓名:陈国静

上机实践名称:Chimege技术学号:20131910084上机实践日期:

2016/4/18

上机实践编号:No.4上机实践时间:15:50

一、实验目的

熟悉Chimege技术,对数据挖掘有一个了解。

二、实验内容

1、最简单的离散算法是:等宽区间。从最小值到最大值之间,,均分为N等份,这样,如果 A, B为最小最大值,则每个区间的长度为w=(B-A) / N, 则区间边界值为 A+W,

A+2W, …. A+(N-1)W.

2、还有一种简单算法,等频区间。区间的边界值要经过选择,使得每个区间包含大致相等的实例数量。比如说 N=10,每个区间应该包含大约10%的实例。

3、以上两种算法有弊端:比如,等宽区间划分,划分为5区间,最高工资为50000,则所有工资低于10000的人都被划分到同一区间。等频区间可能正好相反,所有工资高于50000的人都会被划分到50000这一区间中。这两种算法都忽略了实例所属的类型,落在正确区间里的偶然性很大。

4、C4、CART、PVM算法在离散属性时会考虑类信息,但是是在算法实施的过程中间,而不是在预处理阶段。例如,C4算法(ID3决策树系列的一种),将数值属性离散为两个区间,而取这两个区间时,该属性的信息增益是最大的。

5、评价一个离散算法是否有效很难,因为不知道什么是最高效的分类。

6、离散化的主要目的是:消除数值属性以及为数值属性定义准确的类别。

7、高质量的离散化应该是:区间内一致,区间之间区分明显。

8、ChiMerge算法用卡方统计量来决定相邻区间是否一致或者是否区别明显。如果经过验证,类别属性独立于其中一个区间,则这个区间就要被合并。

9、ChiMerge算法包括2部分:1、初始化,2、自底向上合并,当满足停止条件的时候,区间合并停止。

第一步:初始化

根据要离散的属性对实例进行排序:每个实例属于一个区间

第二步:合并区间,又包括两步骤

(1) 计算每一对相邻区间的卡方值

(2) 将卡方值最小的一对区间合并

预先设定一个卡方的阈值,在阈值之下的区间都合并,阈值之上的区间保持分区间。

卡方的计算公式:

参数说明;

m=2(每次比较的区间数是2个)

k=类别数量

Aij=第i区间第j类的实例的数量

Ri=第i区间的实例数量

Cj=第j类的实例数量

N=总的实例数量

Eij= Aij的期望频率

10、卡方阈值的确定:先选择显著性水平,再由公式得到对应的卡方值。得到卡方值需要指定自由度,自由度比类别数量小1。例如,有3类,自由度为2,则90%置信度(10%显著性水平)下,卡方的值为4.6。阈值的意义在于,类别和属性独立时,有90%的可能性,计算得到的卡方值会小于4.6,这样,大于阈值的卡方值就说明属性和类不是相互独立的,不能合并。如果阈值选的大,区间合并就会进行很多次,离散后的区间数量少、区间大。用户可以不考虑卡方阈值,此时,用户可以考虑这两个参数:最小区间数,最大区间数。用户指定区间数量的上限和下限,最多几个区间,最少几个区间。

11、ChiMerge算法推荐使用.90、.95、.99置信度,最大区间数取10到15之间.

三、实验环境

个人计算机,MATLAB平台

四、实验记录与实验结果分析

(注意记录实验中遇到的问题。实验报告的评分依据之一是实验记录的细致程度、实验过程的真实性、实验结果的解释和分析。如果涉及实验结果截屏,应选择白底黑字。)

程序如下:

%ChiMerge.m:This Program will achieve the ChiMeige function!

%File Read Part:

%格式化读文件:

[a,b,p,q,class] = textread( 'Iris.txt','%f,%f,%f,%f,%s' );

%Data Processing %处理字符串:

t=size(class);

for i=1:t(1,1)

if strcmp(class(i,1),'Iris-setosa')==1

c(i,1)=1;

elseif strcmp(class(i,1),'Iris-versicolor')==1

c(i,1)=2;

elseif strcmp(class(i,1),'Iris-virginica')==1

c(i,1)=3;

end

end

%具体运行

h1=[a c];

h2=[b c];

h3=[p,c];

h4=[q,c];

disp('Case 1:');

chime(h1);

disp('End!');

disp('Case 2:');

chime(h2);

disp('End!');

disp('Case 3:');

chime(h3);

disp('End!');

disp('Case 4:');

chime(h4);

disp('End!');

%建立chime函数用于卡方值的计算及数据离散化操作

function m=chime(h)

%%进行chimerge核心操作,建立区间矩阵,然后通过卡方检验离散化数据!

y=sortrows(h,1);

%排序操作

ty=size(y);

leny=ty(1,1);

x=[y(:,1) y(:,1)];

%初始化区间矩阵

tx=size(x);

lenx=tx(1,1);

while lenx>6 %外层循环,用于结束条件判定

min=9999;

for j=1:lenx-1 %内层循环,用于找出具有最小卡方值的相邻区间

ans=0; m=zeros(3,7);%此(卡方表)矩阵用于保存计算卡方值的相关数据 %后面4个for循环用于卡方表数据的设置

for i=1:leny

if y(i,1)>=x(j,1)&&y(i,1)<=x(j,2)

m(1,y(i,2))=m(1,y(i,2))+1;

elseif y(i,1)>=x(j+1,1)&&y(i,1)<=x(j+1,2)

m(2,y(i,2))=m(2,y(i,2))+1;

end

end

end

for i=1:3

m(3,i)=m(1,i)+m(2,i);

end

for i=1:3

m(i,7)=m(i,1)+m(i,2)+m(i,3);

end

for i=1:2

for k=4:6

m(i,k)=m(i,7)*m(3,k-3)/m(3,7);

if m(i,k)==0 m(i,k)=0.1;

end

end

end

%计算出这两个相邻区间的卡方值

for i=1:2

for k=1:3

ans=ans+((m(i,k)-m(i,k+3))^2)/m(i,k+3); end

end %找出最小卡方值

if ans<=min

min=ans;

key=j;

end

end %相邻区间合并步骤

x(key,2)=x(key+1,2);

x(key+1,:)=[];

lenx=lenx-1;

end

x

Iris.txt

5.1 3.5 1.4 0.2 Iris-setosa

4.9 3.0 1.4 0.2 Iris-setosa

4.7 3.2 1.3 0.2 Iris-setosa

4.6 3.1 1.5 0.2 Iris-setosa

5.0 3.6 1.4 0.2 Iris-setosa

5.4 3.9 1.7 0.4 Iris-setosa

4.6 3.4 1.4 0.3 Iris-setosa

5.0 3.4 1.5 0.2 Iris-setosa

4.4 2.9 1.4 0.2 Iris-setosa

4.9 3.1 1.5 0.1 Iris-setosa

5.4 3.7 1.5 0.2 Iris-setosa

4.8 3.4 1.6 0.2 Iris-setosa

4.8 3.0 1.4 0.1 Iris-setosa

4.3 3.0 1.1 0.1 Iris-setosa

5.8 4.0 1.2 0.2 Iris-setosa

5.7 4.4 1.5 0.4 Iris-setosa

5.4 3.9 1.3 0.4 Iris-setosa

5.1 3.5 1.4 0.3 Iris-setosa

5.7 3.8 1.7 0.3 Iris-setosa

5.1 3.8 1.5 0.3 Iris-setosa

5.4 3.4 1.7 0.2 Iris-setosa

5.1 3.7 1.5 0.4 Iris-setosa

4.6 3.6 1.0 0.2 Iris-setosa

5.1 3.3 1.7 0.5 Iris-setosa

4.8 3.4 1.9 0.2 Iris-setosa

5.0 3.0 1.6 0.2 Iris-setosa

5.0 3.4 1.6 0.4 Iris-setosa

5.2 3.5 1.5 0.2 Iris-setosa

5.2 3.4 1.4 0.2 Iris-setosa

4.7 3.2 1.6 0.2 Iris-setosa

4.8 3.1 1.6 0.2 Iris-setosa

5.4 3.4 1.5 0.4 Iris-setosa

5.2 4.1 1.5 0.1 Iris-setosa

5.5 4.2 1.4 0.2 Iris-setosa

4.9 3.1 1.5 0.1 Iris-setosa

5.0 3.2 1.2 0.2 Iris-setosa

5.5 3.5 1.3 0.2 Iris-setosa

4.9 3.1 1.5 0.1 Iris-setosa

4.4 3.0 1.3 0.2 Iris-setosa

5.1 3.4 1.5 0.2 Iris-setosa

5.0 3.5 1.3 0.3 Iris-setosa

4.5 2.3 1.3 0.3 Iris-setosa

4.4 3.2 1.3 0.2 Iris-setosa

5.0 3.5 1.6 0.6 Iris-setosa

5.1 3.8 1.9 0.4 Iris-setosa

4.8 3.0 1.4 0.3 Iris-setosa

5.1 3.8 1.6 0.2 Iris-setosa

4.6 3.2 1.4 0.2 Iris-setosa

5.3 3.7 1.5 0.2 Iris-setosa

5.0 3.3 1.4 0.2 Iris-setosa

7.0 3.2 4.7 1.4 Iris-versicolor 6.4 3.2 4.5 1.5 Iris-versicolor 6.9 3.1 4.9 1.5 Iris-versicolor 5.5 2.3 4.0 1.3 Iris-versicolor

5.7 2.8 4.5 1.3 Iris-versicolor

6.3 3.3 4.7 1.6 Iris-versicolor 4.9 2.4 3.3 1.0 Iris-versicolor 6.6 2.9 4.6 1.3 Iris-versicolor 5.2 2.7 3.9 1.4 Iris-versicolor 5.0 2.0 3.5 1.0 Iris-versicolor

5.9 3.0 4.2 1.5 Iris-versicolor

6.0 2.2 4.0 1.0 Iris-versicolor 6.1 2.9 4.7 1.4 Iris-versicolor

5.6 2.9 3.6 1.3 Iris-versicolor

6.7 3.1 4.4 1.4 Iris-versicolor 5.6 3.0 4.5 1.5 Iris-versicolor

5.8 2.7 4.1 1.0 Iris-versicolor

6.2 2.2 4.5 1.5 Iris-versicolor 5.6 2.5 3.9 1.1 Iris-versicolor

5.9 3.2 4.8 1.8 Iris-versicolor

6.1 2.8 4.0 1.3 Iris-versicolor 6.3 2.5 4.9 1.5 Iris-versicolor 6.1 2.8 4.7 1.2 Iris-versicolor 6.4 2.9 4.3 1.3 Iris-versicolor 6.6 3.0 4.4 1.4 Iris-versicolor 6.8 2.8 4.8 1.4 Iris-versicolor 6.7 3.0 5.0 1.7 Iris-versicolor 6.0 2.9 4.5 1.5 Iris-versicolor 5.7 2.6 3.5 1.0 Iris-versicolor 5.5 2.4 3.8 1.1 Iris-versicolor 5.5 2.4 3.7 1.0 Iris-versicolor

5.8 2.7 3.9 1.2 Iris-versicolor

6.0 2.7 5.1 1.6 Iris-versicolor

5.4 3.0 4.5 1.5 Iris-versicolor

6.0 3.4 4.5 1.6 Iris-versicolor 6.7 3.1 4.7 1.5 Iris-versicolor 6.3 2.3 4.4 1.3 Iris-versicolor 5.6 3.0 4.1 1.3 Iris-versicolor 5.5 2.5 4.0 1.3 Iris-versicolor

5.5 2.6 4.4 1.2 Iris-versicolor

6.1 3.0 4.6 1.4 Iris-versicolor 5.8 2.6 4.0 1.2 Iris-versicolor 5.0 2.3 3.3 1.0 Iris-versicolor 5.6 2.7 4.2 1.3 Iris-versicolor 5.7 3.0 4.2 1.2 Iris-versicolor

5.7 2.9 4.2 1.3 Iris-versicolor

6.2 2.9 4.3 1.3 Iris-versicolor

5.7 2.8 4.1 1.3 Iris-versicolor

6.3 3.3 6.0 2.5 Iris-virginica 5.8 2.7 5.1 1.9 Iris-virginica

7.1 3.0 5.9 2.1 Iris-virginica 6.3 2.9 5.6 1.8 Iris-virginica

6.5 3.0 5.8 2.2 Iris-virginica

7.6 3.0 6.6 2.1 Iris-virginica 4.9 2.5 4.5 1.7 Iris-virginica 7.3 2.9 6.3 1.8 Iris-virginica

6.7 2.5 5.8 1.8 Iris-virginica

7.2 3.6 6.1 2.5 Iris-virginica 6.5 3.2 5.1 2.0 Iris-virginica 6.4 2.7 5.3 1.9 Iris-virginica 6.8 3.0 5.5 2.1 Iris-virginica 5.7 2.5 5.0 2.0 Iris-virginica

5.8 2.8 5.1 2.4 Iris-virginica

6.4 3.2 5.3 2.3 Iris-virginica

6.5 3.0 5.5 1.8 Iris-virginica

7.7 3.8 6.7 2.2 Iris-virginica 7.7 2.6 6.9 2.3 Iris-virginica 6.0 2.2 5.0 1.5 Iris-virginica 6.9 3.2 5.7 2.3 Iris-virginica 5.6 2.8 4.9 2.0 Iris-virginica 7.7 2.8 6.7 2.0 Iris-virginica 6.3 2.7 4.9 1.8 Iris-virginica

6.7 3.3 5.7 2.1 Iris-virginica

7.2 3.2 6.0 1.8 Iris-virginica 6.2 2.8 4.8 1.8 Iris-virginica 6.1 3.0 4.9 1.8 Iris-virginica

6.4 2.8 5.6 2.1 Iris-virginica

7.2 3.0 5.8 1.6 Iris-virginica 7.4 2.8 6.1 1.9 Iris-virginica 7.9 3.8 6.4 2.0 Iris-virginica 6.4 2.8 5.6 2.2 Iris_virginica 6.3 2.8 5.1 1.5 Iris_virginica

6.1 2.6 5.6 1.4 Iris-virginica

7.7 3.0 6.1 2.3 Iris-virginica 6.3 3.4 5.6 2.4 Iris-virginica 6.4 3.1 5.5 1.8 Iris-virginica 6.0 3.0 4.8 1.8 Iris-virginica 6.9 3.1 5.4 2.1 Iris-virginica 6.7 3.1 5.6 2.4 Iris-virginica 6.9 3.1 5.1 2.3 Iris-virginica

6.8 3.2 5.9 2.3 Iris-virginica

6.7 3.3 5.7 2.5 Iris-virginica

6.7 3.0 5.2 2.3 Iris-virginica

6.3 2.5 5.0 1.9 Iris-virginica

6.5 3.0 5.2 2.0 Iris-virginica

6.2 3.4 5.4 2.3 Iris-virginica

5.9 3.0 5.1 1.8 Iris-virginica

运行结果:

Case 1: x = 4.3000 4.8000 4.9000 4.9000 5.0000 5.4000 5.5000 5.7000 5.8000 7.0000 7.1000 7.9000 End! Case 2: x = 2.0000 2.2000 2.3000 2.4000 2.5000 2.8000 2.9000

2.9000

3.0000 3.3000 3.4000

4.4000 End! Case 3: x =

1.0000 1.9000 3.0000 4.4000 4.5000 4.7000 4.8000

4.9000

5.0000 5.1000 5.2000

6.9000 End! Case 4: x =

0.1000 0.6000 1.0000 1.3000 1.4000 1.6000 1.7000

1.7000 1.8000 1.8000 1.9000

2.5000 End!

结论:

最后区间: a: [4.3 , 4.8],[4.9 , 4.9], [5.0 , 5.4], [5.5 , 5.7], [5.8 , 7.0],

[7.1 , 7.9]. b: [2.0 , 2.2], [2.3 , 2.4], [2.5 , 2.8], [2.9 , 2.9], [3.0 , 3.3], [3.4 , 4.4]. p: [1.0 , 1.9], [3.0 , 4.4], [4.5 , 4.7], [4.8 , 4.9], [5.0 , 5.1], [5.2 , 6.9]. q: [0.1 , 0.6], [1.0 , 1.3], [1.4 , 1.6], [1.7 , 1.7], [1.8 , 1.8], [1.9 , 2.5].

分裂点: a: 4.3, 4.9, 5.0, 5.5, 5.8, 7.1 b: 2.0, 2.3, 2.5, 2.9, 3.0, 3.4 p:

1.0, 3.0, 4.5, 4.8, 5.0, 5.2 q: 0.1, 1.0, 1.4, 1.7, 1.8, 1.9

五、实验体会

ChiMerge是监督的、自底向上的数据离散化方法。它依赖于卡方分析:具有最小卡方值的相

邻区间合并在一起,直到满足确定的停止标准。

基本思想:对于精确的离散化,相对类频率在一个区间内应当完全一致。因此,如果两个相

邻的区间具有非常类似的类分布,则这两个区间可以合并;否则,它们应当保持分开。而低

卡方值表明它们具有相似的类分布

(1)、ChiMerge的工作原理:

ChiMerge算法过程:

第一步:初始化:

根据要离散的属性对实例进行排序;每个实例属于一个区间。

第二步:合并区间,又包括两步骤:

A、计算每一对相邻区间的卡方值;

B、将卡方值最小的一对区间合并。

简化为:

将离散属性值进行升序排序;

将每个实例设置成单独区间;

While(截止条件)

{

循环对每对相邻区间进行卡方计算,找出最小卡方值的相邻区间;

对相邻区间进行合并;

}

(2)、取鸢尾花数据集作为待离散化的数据集合,鸢尾花数据集可以从UCI机器学习数据库得到。使用ChiMerge方法,对四个数值属性分别进行离散化。(令停止条件为:max-interval=6)。需要写一个小程序,以避免麻烦的数值计算。提交你的简要分析和检验结果:分裂点、最终的区间以及源程序文档。

对鸢尾花数值的ChiMerge处理:

输入为:鸢尾花数据集

六、参考文献

1. 数学实验

2.数据挖掘

相关主题
文本预览
相关文档 最新文档