数据挖掘实验.docx
- 文档编号:8642497
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:12
- 大小:618.61KB
数据挖掘实验.docx
《数据挖掘实验.docx》由会员分享,可在线阅读,更多相关《数据挖掘实验.docx(12页珍藏版)》请在冰豆网上搜索。
数据挖掘实验
学生学号
0120810680213
实验课成绩
武汉理工大学
学生实验报告书
实验课程名称数据挖掘
开课学院计算机科学与技术学院
指导老师姓名徐宁
学生姓名祝岭
学生专业班级软件0802班
2010—2011学年第2学期
实验课程名称:
数据挖掘
实验项目名称
数据仓库的设计,实现多维分析
实验成绩
实验者
祝岭
专业班级
软件0802
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
问题描述:
此实验为设计型实验,选择一种数据仓库管理系统,如SQLServerAnalysisManager进行数据仓库的设计,并进行多维数据分析。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
建立数据库和数据源
建立多维数据集
三、主要仪器设备及耗材
微机、MicrosoftSQLServer2008AnalysisServices
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
建立数据库结构:
在AnalysisManager树视图中展开“AnalysisServers”。
单击服务器名称,即可建立与AnalysisServers的连接。
给自己的数据库命名
Link
选择foodmart
Designourcube
欢迎对话框
小的数据浏览
选择区域表,建立多维数据库
我们先选择sales_country,sales_region,sales_state_province,sales_district,andsales_city
提示有潜在威胁
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
创建的数据仓库及多维数据如下图:
三、实验小结、建议及体会
通过本次实验,了解了数据仓库建立的步骤,熟悉了MicrosoftSQLServer2000AnalysisServices下的SQLServerAnalysisManager的使用。
对数据挖掘如何在机器上实现有了进一步的了解。
对常见数据模型的创建过程及结构有了了解.
实验课程名称:
数据挖掘
实验项目名称
综合运用所学,实现一个经典挖掘算符
实验成绩
实验者
祝岭
专业班级
软件0802
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
问题描述:
此实验为综合型实现,要求学生综合利用先修课程高级程序设计语言、数据库、算法设计与分析,与本门数据挖掘课程的知识,选择一种编辑工具,如VisualC++,实现经典挖掘算法Apriori或算法K-Means.
三、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
Apriori算法是一个挖掘关联规则的算法,是Agrawal等设计的一个基本算法,这是一个采用两阶段挖掘的思想,并且基于多次扫描事务数据库来执行的。
Apriori算法的设计可以分解为两步骤来执行挖掘:
1.从事务数据库(D)中挖掘出所有频繁项集。
支持度大于最小支持度minSup的项集(Itemset)称为频集(FrequentItemset)。
首先需要挖掘出频繁1-项集;
然后,继续采用递推的方式来挖掘频繁k-项集(k>1),具体做法是:
在挖掘出候选频繁k-项集(Ck)之后,根据最小置信度minSup来筛选,得到频繁k-项集。
最后合并全部的频繁k-项集(k>0)。
挖掘频繁项集的算法描述如下:
(1)L1=find_frequent_1-itemsets(D);//挖掘频繁1-项集,比较容易
(2)for(k=2;Lk-1≠Φ;k++){
(3)Ck=apriori_gen(Lk-1,min_sup);//调用apriori_gen方法生成候选频繁k-项集
(4)foreachtransactiont∈D{//扫描事务数据库D(5)Ct=subset(Ck,t);
(6)foreachcandidatec∈Ct(7)c.count++;//统计候选频繁k-项集的计数(8)}
(9)Lk={c∈Ck|c.count≥min_sup}//满足最小支持度的k-项集即为频繁k-项集(10)}
(11)returnL=∪kLk;//合并频繁k-项集(k>0)
2.基于第1步挖掘到的频繁项集,继续挖掘出全部的频繁关联规则。
置信度大于给定最小置信度minConf的关联规则称为频繁关联规则(FrequentAssociationRule)。
在这一步,首先需要从频繁项集入手,首先挖掘出全部的关联规则(或者称候选关联规则),然后根据minConf来得到频繁关联规则。
挖掘频繁关联规则的算法描述如下:
(1)初始状态:
L=∪kLk;AR=Φ;//L是频繁项集集合,AR是频繁关联规则集合
(2)forallλk(λk是L的元素,是一个k-频繁项集,大小为n){
(3)forallαk(αk是λk的非空真子集){
(4)if(αk→βm的置信度>=minConf){//这里,m+k=n,其中αk→βm是一个关联规则
(5)AR=AR∪(αk→βm);(6)}(7)}(8)}(9)returnAR;
三、主要仪器设备及耗材
微机、MyEclipse6.5
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
对Apriori算法的实现进行了简单的测试,测试用例如下所示:
packageorg.shirdrn.datamining.association;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Set;
importjava.util.TreeSet;
importorg.shirdrn.datamining.association.AprioriAlgorithm;
importjunit.framework.TestCase;
/**
*Apriori算法测试类
*/
publicclassTestAprioriAlgorithmextendsTestCase{
privateAprioriAlgorithmapriori;
privateMap
privateFloatminSup=newFloat("0.50");
privateFloatminConf=newFloat("0.70");
protectedvoidsetUp()throwsException{
create();//构造事务数据库
apriori=newAprioriAlgorithm(txDatabase,minSup,minConf);
}
/**
*构造模拟事务数据库txDatabase
*/
publicvoidcreate(){
txDatabase=newHashMap
Set
set1.add("A");
set1.add("B");
set1.add("C");
set1.add("E");
txDatabase.put(1,set1);
Set
set2.add("A");
set2.add("B");
set2.add("C");
txDatabase.put(2,set2);
Set
set3.add("C");
set3.add("D");
txDatabase.put(3,set3);
Set
set4.add("A");
set4.add("B");
set4.add("E");
txDatabase.put(4,set4);
}
/**
*测试挖掘频繁1-项集
*/
publicvoidtestFreq1ItemSet(){
System.out.println("挖掘频繁1-项集:
"+apriori.getFreq1ItemSet());
}
/**
*测试aprioriGen方法,生成候选频繁项集
*/
publicvoidtestAprioriGen(){
System.out.println(
"候选频繁2-项集:
"+
this.apriori.aprioriGen(1,this.apriori.getFreq1ItemSet().keySet())
);
}
/**
*测试挖掘频繁2-项集
*/
publicvoidtestGetFreq2ItemSet(){
System.out.println(
"挖掘频繁2-项集:
"+
this.apriori.getFreqKItemSet(2,this.apriori.getFreq1ItemSet().keySet())
);
}
/**
*测试挖掘频繁3-项集
*/
publicvoidtestGetFreq3ItemSet(){
System.out.println(
"挖掘频繁3-项集:
"+
this.apriori.getFreqKItemSet(
3,
this.apriori.getFreqKItemSet(2,this.apriori.getFreq1ItemSet().keySet()).keySet()
)
);
}
/**
*测试挖掘全部频繁项集
*/
publicvoidtestGetFreqItemSet(){
this.apriori.mineFreqItemSet();//挖掘频繁项集
System.out.println("挖掘频繁项集:
"+this.apriori.getFreqItemSet());
}
/**
*测试挖掘全部频繁关联规则
*/
publicvoidtestMineAssociationRules(){
this.apriori.mineFreqItemSet();//挖掘频繁项集
this.apriori.mineAssociationRules();
System.out.println("挖掘频繁关联规则:
"+this.apriori.getAssiciationRules());
}
}
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
实验结果如下:
挖掘频繁1-项集:
{[E]=0.5,[A]=0.75,[B]=0.75,[C]=0.75}
候选频繁2-项集:
[[E,C],[A,B],[B,C],[A,C],[E,B],[E,A]]
挖掘频繁2-项集:
{[A,B]=0.75,[B,C]=0.5,[A,C]=0.5,[E,B]=0.5,[E,A]=0.5}
挖掘频繁3-项集:
{[E,A,B]=0.5,[A,B,C]=0.5}
挖掘频繁项集:
{1=[[E],[A],[B],[C]],2=[[A,B],[B,C],[A,C],[E,B],[E,A]],3=[[E,A,B],[A,B,C]]}
挖掘频繁关联规则:
{[E]=[[A],[B],[A,B]],[A]=[[B]],[B]=[[A]],[B,C]=[[A]],[A,C]=[[B]],[E,B]=[[A]],[E,A]=[[B]]
三、实验小结、建议及体会
通过本次实验,了解了Apriori算法的基本思想。
同时也对数据挖掘的作用有了更深刻的了解,实验过程中自己动手解决了一些问题,加强我学习能力动手能力.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 挖掘 实验