数据挖掘实验文档格式.docx
《数据挖掘实验文档格式.docx》由会员分享,可在线阅读,更多相关《数据挖掘实验文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
专业班级
软件0802
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
问题描述:
此实验为设计型实验,选择一种数据仓库管理系统,如SQLServerAnalysisManager进行数据仓库的设计,并进行多维数据分析。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
建立数据库和数据源
建立多维数据集
三、主要仪器设备及耗材
微机、MicrosoftSQLServer2008AnalysisServices
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
建立数据库结构:
在AnalysisManager树视图中展开“AnalysisServers”。
单击服务器名称,即可建立与AnalysisServers的连接。
给自己的数据库命名
Link
选择foodmart
Designourcube
欢迎对话框
小的数据浏览
选择区域表,建立多维数据库
我们先选择sales_country,sales_region,sales_state_province,sales_district,andsales_city
提示有潜在威胁
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
创建的数据仓库及多维数据如下图:
三、实验小结、建议及体会
通过本次实验,了解了数据仓库建立的步骤,熟悉了MicrosoftSQLServer2000AnalysisServices下的SQLServerAnalysisManager的使用。
对数据挖掘如何在机器上实现有了进一步的了解。
对常见数据模型的创建过程及结构有了了解.
综合运用所学,实现一个经典挖掘算符
一、实验内容描述(问题域描述)
此实验为综合型实现,要求学生综合利用先修课程高级程序设计语言、数据库、算法设计与分析,与本门数据挖掘课程的知识,选择一种编辑工具,如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;
/**
*<
B>
Apriori算法测试类<
/B>
*/
publicclassTestAprioriAlgorithmextendsTestCase{
privateAprioriAlgorithmapriori;
privateMap<
Integer,Set<
String>
>
txDatabase;
privateFloatminSup=newFloat("
0.50"
);
privateFloatminConf=newFloat("
0.70"
protectedvoidsetUp()throwsException{
create();
//构造事务数据库
apriori=newAprioriAlgorithm(txDatabase,minSup,minConf);
}
*构造模拟事务数据库txDatabase
publicvoidcreate(){
txDatabase=newHashMap<
();
Set<
set1=newTreeSet<
set1.add("
A"
B"
C"
E"
txDatabase.put(1,set1);
set2=newTreeSet<
set2.add("
txDatabase.put(2,set2);
set3=newTreeSet<
set3.add("
D"
txDatabase.put(3,set3);
set4=newTreeSet<
set4.add("
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(){
挖掘频繁2-项集:
"
this.apriori.getFreqKItemSet(2,this.apriori.getFreq1ItemSet().keySet())
*测试挖掘频繁3-项集
publicvoidtestGetFreq3ItemSet(){
挖掘频繁3-项集:
this.apriori.getFreqKItemSet(
3,
this.apriori.getFreqKItemSet(2,this.apriori.getFreq1ItemSet().keySet()).keySet()
)
*测试挖掘全部频繁项集
publicvoidtestGetFreqItemSet(){
this.apriori.mineFreqItemSet();
//挖掘频繁项集
挖掘频繁项集:
+this.apriori.getFreqItemSet());
*测试挖掘全部频繁关联规则
publicvoidtestMineAssociationRules(){
this.apriori.mineAssociationRules();
挖掘频繁关联规则:
+this.apriori.getAssiciationRules());
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
实验结果如下:
{[E]=0.5,[A]=0.75,[B]=0.75,[C]=0.75}
[[E,C],[A,B],[B,C],[A,C],[E,B],[E,A]]
{[A,B]=0.75,[B,C]=0.5,[A,C]=0.5,[E,B]=0.5,[E,A]=0.5}
{[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算法的基本思想。
同时也对数据挖掘的作用有了更深刻的了解,实验过程中自己动手解决了一些问题,加强我学习能力动手能力.