当前位置:文档之家› 数据挖掘作业1

数据挖掘作业1

智能信息处理第一次作业费洋2013010905010 2.4
Age盒图
FAT盒图
2.8
相似性
X1 X4 X3 X5 X2
相似性X1 X4 X3 X5 X2 上确界距离 相似性
X1 X3 X4 X2 X5 相似性 X1 X3 X4 X2 X5
相似性X1 X3 X4 X2 X5 3.3
使用深度为3的箱,用箱均值光滑
先把27个数据按顺序分为3组,每组求出均值 箱1: 18 箱2: 28.1 箱3: 43.8
效果就是箱中的每一个数据都替换成了均值。

用聚类分析或者回归检测离群点。

52 与70与均值差距较大,为离群点 还可以用箱中位数,箱边界光滑数据。

3.7
最小最大化规范
我愿意使用归一化,这样原来的数据不会改变太多。

3.12
1.ChiMerge算法怎么工作?
第一步:初始化
根据要离散的属性对实例进行排序:每个实例属于一个区间
第二步:合并区间,又包括两步骤
(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之间.
ChiMerge算法过程:
第一步:初始化:
根据要离散的属性对实例进行排序;每个实例属于一个区间。

第二步:合并区间,又包括两步骤:
A、计算每一对相邻区间的卡方值;
B、将卡方值最小的一对区间合并。

简化为:
将离散属性值进行升序排序;
将每个实例设置成单独区间;
While(截止条件)
{
循环对每对相邻区间进行卡方计算,找出最小卡方值的相邻区间;
对相邻区间进行合并;
}
[a,b,p,q,class] = textread( 'irisdata.txt','%f,%f,%f,%f,%s' );
%鸢尾花数据集花萼长度,萼片宽,花瓣长度,花瓣宽,鸢尾花类型;
t=size(class); %【行列】
fori=1:t(1,1) %classify
ifstrcmp(class(i,1),'Iris-setosa')==1
c(i,1)=1; %strcmp比较字符串函数;
elseifstrcmp(class(i,1),'Iris-versicolor')==1
c(i,1)=2;
elseifstrcmp(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!');
function m=chime(h)
y=sortrows(h,1);%升序排列
ty=size(y);
leny=ty(1,1); %leny=150
x=[y(:,1) y(:,1)];%初始化区间矩阵【aa】
tx=size(x); %[150 2]
lenx=tx(1,1); %lenx=150
whilelenx>6
%外层循环,用于结束条件判定
min=9999;
for j=1:lenx-1
%内层循环,用于找出具有最小卡方值的相邻区间
ans=0;
m=zeros(3,7);%此(卡方表)矩阵用于保存计算卡方值的相关数据
%后面4个for循环用于卡方表数据的设置
fori=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
fori=1:3
m(3,i)=m(1,i)+m(2,i);
end
fori=1:3
m(i,7)=m(i,1)+m(i,2)+m(i,3);
end
fori=1:2
for k=4:6
m(i,k)=m(i,7)*m(3,k-3)/m(3,7); %Eij=Ni*Cj/N
if m(i,k)==0
m(i,k)=0.1;
end
end
end
%计算出这两个相邻区间的卡方值
fori=1:2
for k=1:3
ans=ans+((m(i,k)-m(i,k+3))^2)/m(i,k+3);
end
end
%找出最小卡方值
ifans<=min
min=ans;
key=j;
end
%相邻区间合并步骤
x(key,2)=x(key+1,2);
x(key+1,:)=[];
lenx=lenx-1;
end
x
------------------------------------------------------------------------------------------------------------------------- 运行结果:
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
结论:
最后区间:
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。

相关主题