数据挖掘上机报告Word文档格式.docx
- 文档编号:22118258
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:35
- 大小:1,017.82KB
数据挖掘上机报告Word文档格式.docx
《数据挖掘上机报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据挖掘上机报告Word文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
纵向连接新矩阵;
(4)创建一个向量,找出向量中所有大于0的元素的下标。
3、自定义函数(可在帮助文件中搜索关于function的帮助文档)
(1)自定义一个函数,输入为两个实数,输出为此两个数的和、差、积、商;
代码:
function[hechajishang]=Compute4(a,b)
%UNTITLED´
Ë
´
¦
Ï
Ô
Ê
¾
Ó
Ð
¹
Ø
º
¯
ý
µ
Ä
Õ
ª
Ò
%´
ê
¸
Ã
÷
he=a+b
cha=a-b
ji=a*b
shang=a/b
end
代码验证:
>
c=Compute4(4,5)
(2)自定义一个函数,输入为一个区间的左边界、右边界和步长,以该步长在此区间内绘
制出函数f(x)=x*sin(x)的图像;
function[z]=Image01(a,b,c)
x=a:
c:
b
y=x.*sin(x)
z=plot(x,y)
验证:
图像
(3)自定义一个函数,输入为一个向量,输出为向量中所有比前一个元素大的当前元素之
和。
function[bb]=Sum01(a)
c=length(a)
bb=0
fori=2:
c
if(a(i)>
a(i-1))
bb=bb+a(i)
end
4、自定义一个文件夹,将以上所有自定义函数放入此文件夹中,并让matlab程序的当前路
径指向此文件夹
第二次上机训练内容
本次上机主要训练如何实现关联规则Apriori算法,训练前需掌握如何按算法流程对实
例进行手工计算,例如,之前布置的课后作业:
•已知交易记录数据库D中有9条交易记录(事务):
•T1:
A,B,ET2:
B,DT3:
B,CT4:
A,B,D
•T5:
A,CT6:
B,CT7:
A,CT8:
A,B,C,E
•T9:
A,B,C
•设定最小支持度为20%,最小可信度为60%,找出所有的强规则并计算其支持度和
可信度
在对以上类型的问题进行关联规则挖掘时,需要考虑以下算法实现的问题:
(1)首先考虑如何用(-1/0/1)表示事务集、频繁集、关联规则;
(2)其次考虑创建两个函数,分别计算项集的支持度和可信度;
(3)然后考虑如何得到所有的频繁项集;
(4)最后考虑如何从所有频繁集中找出强关联规则。
提示:
1、此算法的接口可定义为:
[R,sup,conf]=Apriori(D,min_sup,min_conf)
其中输入变量分别为事务集、最小支持度和最小可信度,输出分别为强规则、支持度和
可信度。
在作业中的例子中,事务集的可表示为:
D(1:
4,:
)=[1,1,0,0,1;
0,1,0,1,0;
0,1,1,0,0;
1,1,0,1,0];
输出的强规则由-1/0/1组成,类似有如下形式:
R=[-1,1,0,-1,0]
此规则的含义是A,Dà
B。
2、创建的计算支持度的函数有如下形式:
sup=compute_sup(S,D)
其中S为要计算支持度的项集,由0/1组成,有类似于上一条中R的形式。
现在假设S=[1,0,1,0,0],则其计算支持度时需要顺序与D中的每一行进行比较,比较
的公式如下:
判断:
all(D(i,:
)-S)==true,如成立则支持度计数增加1,否则不增加。
3、此问题的算法实现过程可能用到的matlab函数包含:
eye,all,find,size,zeros,nchoosek
原理:
Apriori算法的基本过程是:
扫描一遍数据库,得到一阶频繁项;
用一阶频繁项构造二阶候选项;
扫描数据库对二阶候选项进行计数,删除其中的非频繁项,得到二阶频繁项;
然后构造三阶候选项,以此类推,直到无法构造更高阶的候选项,或到达频繁项集的最大长度限制。
Apriori算法的示意流程如下图所示:
如何从k阶的频繁项集生成k+1阶候选项集:
自连接+裁剪(若k+1阶候选项的k阶子集中至少有一个不存在于k阶频繁项集中,则裁剪——Apriori裁剪规则,又称向下闭合特性)
表示事务集:
T1:
A,B,E11001
T2:
B,D01010
T3:
B,C01100
T4:
A,B,D11010
T5:
A,C10100
T6:
B,C01100
T7:
T8:
A,B,C,E11101
T9:
A,B,C11100
计算项集的支持度:
function[sup]=compute_sup(S,D)
[n,m]=size(D);
sup=0;
fori=1:
n
ifall((D(i,:
)-S)>
=0)==true
sup=sup+1;
end
sup=sup/n
计算项集的置信度:
function[conf]=compute_conf(R,D)
conf=compute_sup(abs(R),D)/compute_sup((abs(R)-R)/2,D);
Apriori.m代码:
function[R,SupR,Conf]=Aprior(D,min_sup,min_conf)
[m,n]=size(D);
L=[];
C=[];
Lk=[];
Ck=[];
Sup=[];
%频繁集L的支持度系数矩阵
fork=1:
n,
if(k==1)
Ck=eye(n);
else
p=size(Lk,1);
%1,获取矩阵的行数
Ck=[];
fori=1:
p-1%find()位置的判定:
在矩阵中,第一列开始,自上而下,依次为1,2,3...,然后再从第二列,第三列依次往后数)
forj=i+1:
p
indi=find(Lk(i,:
)==1);
indj=find(Lk(j,:
ifall(indi(1:
end-1)==indj(1:
end-1))&
&
(indi(end)~=indj(end))
Ck=[Ck;
Lk(i,:
)|Lk(j,:
)];
end;
q=size(Ck,1);
%获取矩阵的行数,即C1的项集
Supk=zeros([q,1]);
%产生q×
1的零矩阵
q%CK的行数
forj=1:
m%D的行数
ifall(D(j,:
)-Ck(i,:
)>
=0)%D的行-CK的行,若大于0则说明包含
Supk(i)=Supk(i)+1;
%supk的第i行加1
ind=find(Supk>
=min_sup*m);
Sup=[Sup;
Supk(ind,:
%把支持度系数放到Sup矩阵中,第二个算法要用到
Lk=Ck(ind,:
);
L=[L;
Lk];
[R,SupR,Conf]=find_rule(D,L,Sup,min_conf);
Find_rule.m
function[R,SupR,Conf]=find_rule(D,L,Sup,min_conf)
R=[];
Conf=[];
SupR=[];
[m,n]=size(L);
[g,h]=size(D);
m%i是L的第i行,比如i=13,[1,1,0,0,1]
rowLi=sum(L(i,:
0);
%rowLi是L第i行含1的个数rowLi=3
if(rowLi>
1)
ind=find(L(i,:
%ind是L第i行含1的下标矩阵ind=[1,2,5]
rowLi-1%j=1,j=2
nchoosei=nchoosek(ind,j);
%[1,2,5][12,15,25]
[a,b]=size(nchoosei);
%a=3,b=1/a=3,b=2
forx=1:
a
line_temp=zeros(1,n);
%一个1×
5的零矩阵,
lineL=L(i,:
%L的第i行
fory=1:
b
lineL(1,nchoosei(x,y))=-1;
%每次循环将L的第i个集项的一个非空子集当成条件改成-1
line_temp(1,nchoosei(x,y))=1;
%把零矩阵中条件项所在的位置改成1,用于接下来算该规则的置信度
forz=1:
m
ifall(line_temp-L(z,:
)==0)%找在条件在频繁集中的所在的行数
confi=Sup(i,1)/Sup(z,1);
%因为Sup矩阵和L各项的位置一一对应,用找到的行数从频繁集的支持度系数矩阵中找到条件集项的支持度
if(confi>
=min_conf)%判断算出的置信度是否满足最小置信度
R=[R;
lineL];
%若是,将lineL加入R中
Conf=[Conf;
confi];
%将置信度加入Conf中
SupR=[SupR;
Sup(i,1)/g];
%将支持度加入SupR中
第三次上机训练报告
functiony0=newID3(X,x0)
%X为训练集,其中一行为一个样本,最后一列为分类
%x0为新样本,因新样本尚未确定分类,故将最后一个值定为-1
[n,m]=size(X);
xy=max(X(:
m));
%xy为X的最后一列即分类的最大值
H=[];
%定义H用于存储各个属性的后验熵
%对第k个属性进行计算-->
fork=1:
m-1
xx=max(X(:
k));
%xx为X的第k个属性的最大取值
G=zeros(xy,xx);
%G为第k个属性的信息增益矩阵
xy
xx
G(i,j)=length(find(X(:
k)==j&
X(:
m)==i));
%得到第k个属性的信息增益矩阵G
HUV=0;
size(G,2)%i为xk的列
HUV=HUV+sum(G(:
i))/n.*entropy(X(:
i)'
%得到第k个属性的后验熵
H=[H,HUV];
%得到每一个属性的信息增益并存储在向量H中
%第k个属性计算完毕
[miny,mH]=min(H);
%取得后验熵最小的属性的列数
X(find(X(:
mH)~=x0(mH))'
:
)=[];
%<
1>
mH)=[];
2>
%注:
<
不可颠倒
%将X裁小
ifmin(X(:
size(X,2)))==max(X(:
size(X,2)))
y0=miny;
return;
%若Y值只剩一个,则退出循环返回y0
y0=ID3(X,x0);
%函数重新调用自己
functionr=entropy(z)
s=sum(z);
r=0;
forri=1:
length(z)
r=r-z(ri)/s.*log2(z(ri)/s);
end;
第四次上机训练报告
function[z]=my_fun(x)
z=x*sin(10*pi*x)+2;
z=-z;
options=gaoptimset('
Generations'
200,'
PopulationSize'
20,'
PlotFcns'
@gaplotbestf,'
StallGenLimit'
200);
options.Generations=2000;
%最大迭代数设为2000
[X,FVAL,EXITFLAG,OUTPUT]=ga(@my_fun,1,[],[],[],[],[],[2,-1],[],options);
Optimizationterminated:
averagechangeinthefitnessvaluelessthanoptions.TolFun.
运行结果如图
versicolor类和非versicolor类
线性核函数
径向基核函数
virginica类和非virginica类
线性基函数
径向基函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 挖掘 上机 报告