数据仓库与数据挖掘报告Word格式.docx
《数据仓库与数据挖掘报告Word格式.docx》由会员分享,可在线阅读,更多相关《数据仓库与数据挖掘报告Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
![数据仓库与数据挖掘报告Word格式.docx](https://file1.bdocx.com/fileroot1/2022-12/11/a55e62ed-8628-49c9-a73f-9d8916471165/a55e62ed-8628-49c9-a73f-9d89164711651.gif)
AnalysisManager。
2、按照AnalysisService的自学教程完成对FoodMart数据源的联机分析。
3、在开始-设置-控制面板-管理工具-数据源(ODBC),数据源管理器中设置和源数据的连接,“数据源名”为你的班级+学号+姓名。
4、在开始-设置-控制面板-管理工具-服务-MSSQLServerOLAPService,启动该项服务。
在AnalysisManager中,单击服务器名称,即可建立与AnalysisServers的连接;
否则,在AnalysisServers上单击右键,注册服务器,在服务器名称中输入本地计算机的名字,如pc56。
本地计算机的名字可右击:
我的电脑,选择属性,网络标志,里面有本地计算机的名字。
建立新的数据库,数据库名与数据源名相同,如T9730150杨阳。
在你所建立的数据库中,单击“新数据源”,和早期在ODBC数据源管理器中建立的数据源连接。
5、假设你是FoodMartCorporation的数据库管理员。
FoodMart是一家大型的连锁店,在美国、墨西哥和加拿大有销售业务。
市场部想要按产品和顾客分析1998年进行的所有销售业务数据。
要求建立Sales多维数据集,多维数据集是由维度和事实定义的。
其维度有“Time”维度、“Product”维度、“Customer”维度、“Store”维度和“Promotion”维度,事实表为sales_fact_1998,事实表中的度量为:
store_sales、store_cost、unit_sales。
理解每个维度的级别。
6、可以使用多维数据集编辑器对现有多维数据集进行更改。
在使用或浏览多维数据集中的数据之前,要求设计多维数据集中的数据和聚合的存储选项。
即设计好Sales多维数据集的结构之后,需要选择要使用的存储模式并指定要存储的预先计算好的值的数量。
完成此项操作之后,需要用数据填充多维数据集。
这里选择MOLAP作为存储模式,创建Sales多维数据集的聚合设计,然后处理该多维数据集。
处理Sales多维数据集时将从ODBC源中装载数据并按照聚合设计中的定义计算汇总值。
7、使用多维数据集浏览器,可以用不同的方式查看数据:
可以筛选出可见的维度数据量,可以深化以看到数据的细节,还可以浅化以看到较为概括的数据。
这里可以使用多维数据集浏览器对Sales数据进行切片和切块操作。
要求理解OLAP操作下数据的含义,从而可以分析数据。
8、人力资源部想按商店来分析雇员的工资。
本节将建立一个HR(人力资源)多维数据集,以进行雇员工资分析。
将把Employee(雇员)维度创建为父子维度。
然后使用该维度以及常规维度来生成HR多维数据集。
其中,事实数据表为salary(工资),维度为Employee(雇员)、Store(商店)、Time(时间)。
了解如何建立父子维度。
9、建立计算成员和成员属性。
在Sales多维数据集中建立“Averageprice”计算成员,思考建立该计算成员的目的。
市场部希望将Sales多维数据集分析功能扩展到根据客户的下列特征分析客户销售数据:
性别、婚姻状况、教育程度、年收入、在家子女数和会员卡。
需要向Customer维度添加以下六个成员属性:
Gender(性别)、Maritalstatus(婚姻状况)、Education(教育程度)、YearlyIncome(年收入)、NumChildrenAtHome(在家子女数)和MemberCard(会员卡)。
这些成员属性将限制Customer维度中的每个成员。
理解什么是计算成员和成员属性,为什么要建立?
10、已经为客户维度添加了六个成员属性,可以创建一个带有YearlyIncome(年收入)成员属性的虚拟维度,然后将这个新创建的维度添加到Sales多维数据集中。
使用虚拟维度,可以基于多维数据集中的维度成员的成员属性对多维数据集数据进行分析。
其优点是不占用磁盘空间或处理时间。
11、理解多维数据集角色和数据库角色的联系和区别、建立角色的目的。
12、查看销售多维数据集的元数据和维度的元数据,加深对元数据概念和分类的理解。
实验小结:
实验二使用WEKA进行分类与预测
综合性实验学时:
掌握数据挖掘平台WEKA的使用。
综合运用数据预处理、分类与预测的挖掘算法、结果的解释等知识进行数据挖掘。
从而加深理解课程中的相关知识点。
阅读并理解WEKA的相关中英文资料,熟悉数据挖掘平台WEKA,针对实际数据,能够使用WEKA进行数据的预处理,能选择合适的分类与预测算法对数据进行分析,并能解释分析结果。
1、在开始->
程序->
启动WEKA,进入Explorer界面,熟悉WEKA的界面功能。
2、选择数据集(实验中的数据可以从网络获取),如泰坦尼克号数据集,将要处理的数据集转换成WEKA能处理的格式,如.ARFF格式。
思考:
如何将其它格式的数据文件(如.XLS)转换为.ARFF格式?
答:
有两种方式:
(1)用WEKA3.5中提供了一个“ArffViewer”模块,我们可以用它打开一个CSV文件将进行浏览,然后另存为ARFF文件。
(2)进入“SimpleCLI”模块,在窗口的最下方输入javaweka.core.converters.CSVLoaderbank-data.csv>
bank-data.arff,就可以把数据集bank-data.csv转换成WEKA能处理的bank-data.arff。
3、根据选择的数据挖掘算法,如果有必要,在WekaExplorer界面,Preprocess选项中,进行相应的数据预处理。
要求:
熟悉Preprocess界面中各个功能选项的含义,理解数据的特征。
我选用的数据集bank-data.arff总共有11个属性其中属性ID对数据挖掘来说是没有意义的就把把它去除掉,剩下10个属性。
这10个属性中“age”,“income”和“children”三个属性的属性值是数值型的,在对数据集进行分类和预测时我采用的算法只能处理所有的属性都是分类型的情况,因此要对这三个属性进行离散化。
在filter中,supervised和unsupervised的区别?
选择supervised需要设置一个class属性,而unsupervised却忽略class属性。
4、在WekaExplorer界面,单击Visualize选项,进入WEKA的可视化页面,可以对当前的关系作二维散点图式的可视化浏览。
要求:
熟悉Visualize界面中各个功能选项的含义,理解可视化图形的意义。
5、选择相应的分类与预测挖掘算法对数据集进行分析,进行算法参数的具体设置。
如利用WEKA->
Classifier->
trees->
J48决策树算法,对泰坦尼克号数据集进行分析;
如利用回归模型对连续数值进行预测。
对你选择的分类和预测算法思想分别进行介绍,熟悉classify界面的内容,对classifier中的参数含义分别进行介绍。
classifier->
J48算法与classifier->
id3算法的区别与联系。
id3:
cannothandlenumericattributes.即不能处理数值型的数据而classifier->
J48算法可以处理数值型的数据。
J48算法是ID3算法的改进,增加了对连续型的属性,属性值空缺的情况的处理;
而ID3算法只适用于所有属性都是离散字段的情况。
这个矩阵是说,原本“pep”是“YES”的实例,有74个被正确的预测为“YES”,有42个错误的预测成了“NO”;
原本“pep”是“NO”的实例,有48个被错误的预测为“YES”,有278个正确的预测成了“NO”。
232+42+48+278=600是实例总数,而(232+278)/600=0.85正好是正确分类的实例所占比例。
这个矩阵对角线上的数字越大,说明预测得越好。
6、对分析所获得的结果进行解释。
如,根据决策树和分类规则尝试讨论泰坦尼克号幸存者的特征。
理解评估分类和预测优劣的一些准则。
实验三使用WEKA进行关联规则与聚类分析
综合性实验学时:
综合运用数据预处理、关联规则与聚类的挖掘算法、结果的解释等知识进行数据挖掘。
阅读并理解WEKA的相关中英文资料,熟悉数据挖掘平台WEKA,针对实际数据,能够使用WEKA进行数据的预处理,了解属性选择,能选择合适的关联规则与聚类算法对数据进行分析,并能解释分析结果。
2、选择数据集(实验中的数据可以从网络获取),将要处理的数据集转换成WEKA能处理的格式,如.ARFF格式。
根据选择的数据挖掘算法,如果有必要,在WekaExplorer界面,Preprocess选项中,进行相应的数据预处理。
在这次实验中我选用的数据集还是上次实验中的用到的数据集bank-data.arff,把属性ID除去,在进行关联规则分析时还要对age”,“income”和“children”三个数值型属性进行离散化;
而在聚类分析的时候把“children”属性改为分类型。
3、在WekaExplorer界面,单击Selectattributes选项,进入WEKA的属性选择页面。
了解该界面中主要功能选项的含义,理解该界面的功能。
其中,AttributeSelectionMode一栏有两个选项。
1.Usefulltrainingset.使用训练数据的全体好决定一组属性的好坏。
2.Cross-validation.一组属性的好坏通过一个交叉验证过程来决定。
Fold和Seed分别给出了交叉验证的折数和打乱数据时的随机种子。
4、在WekaExplorer界面,单击Associate选项,进入WEKA的关联规则页面。
选择一个关联规则算法对数据集进行分析,进行算法参数的具体设置。
对你选择的关联规则算法思想进行介绍,熟悉Associate界面的内容,对Associate中的参数含义分别进行介绍。
理解用来衡量规则的关联程度的几个度量指标。
理解并解释分析所获得的结果。
我选择的算法为Apriori算法,参数设置为Apriori-N5-T1-C1.5-D0.05-U1.0-M0.1-S-1.0-c-1(lowerBoundMinSupport=0.1,upperBoundMinSupport=1,“metricType”设为lift,“minMetric”设为1.5,“numRules”设为5,选择排在前5的那些关联规则,此外lift(x→y)=p(x∪y)/p(x)*p(y)).
Apriori算法有两步:
(1).从事务数据库中挖掘出所有频繁项集;
(2).基于第1步挖掘到的频繁项集,继续挖掘出全部的频繁关联规则。
得到的结果如下:
1.age='
(-inf-34]'
195==>
income='
(-inf-24386]'
current_act=YES138conf:
(0.71)<
lift:
(1.97)>
lev:
(0.11)[68]conv:
(2.16)
2.income='
current_act=YES215==>
age='
138conf:
(0.64)<
(1.86)
3.income='
285==>
car=NO100conf:
(0.35)<
(0.08)[49]conv:
(1.26)
4.age='
car=NO107==>
100conf:
(0.93)<
(7.02)
5.age='
pep=NO111conf:
(0.57)<
(1.94)>
(0.09)[53]conv:
(1.62)结果中这五个关联规则里都列出来了关联度的四项指标:
置信度conf=p(x|y),;
lift(x→y)=p(x∪y)/p(x)*p(y);
Leverage,lev=p(x∪y)-p(x)*p(y);
Convictionconv=p(x)p(!
y)/p(x∪!
y).
5、在WekaExplorer界面,单击Cluster选项,进入WEKA的聚类页面。
选择一个聚类算法(如K均值)对数据集进行分析,进行算法参数的具体设置。
对你选择的聚类算法思想进行介绍,熟悉Cluster界面的内容,对Cluster中的参数含义进行介绍。
我选择的算法是K-means,参数设置为SimpleKMeans-N6-S200(numClusters=6即分为六个类,seed=200,之所以设置seed的值为200,因为此时平方误差和最小)。
K-means算法首先随机的指定K个簇中心。
然后:
1)将每个实例分配到距它最近的簇中心,得到K个簇;
2)计分别计算各簇中所有实例的均值,把它们作为各簇新的簇中心。
重复1)和2),直到K个簇中心的位置都固定,簇的分配也固定。
运行的结果如下:
Numberofiterations:
6
Withinclustersumofsquarederrors:
1551.726508653268(这是平方误差之和)
ClusteredInstances
0175(29%)
185(14%)
253(9%)
387(14%)
4130(22%)
570(12%)(每个类的包含的实例个数以及占总实例的百分比)
实验四数据挖掘算法的程序实现
设计性实验学时:
运用数据挖掘、程序设计等相关知识,选择一个数据挖掘的常用算法进行程序设计实现。
加深对数据挖掘算法基本原理、详细执行过程和具体应用情况的理解。
采用任何一种自己熟悉的编程语言,完成算法的程序设计,并在每个程序设计语句后面进行详细的注释。
能够运用实现的算法来解决某个具体的问题,得到并解释程序运行的结果。
推荐的算法:
1关联规则:
Apriori算法
2分类与预测:
ID3,C4.5,KNN,BP,
3聚类:
k-means
1.提前预习,选择算法,理解原理。
2.针对具体问题,选择熟悉的编程平台,进行算法的程序实现,尽量在每个程序语句后面进行详细注释。
3.自己选择某个数据集,应用实现的算法得到结果并解释。
在这次实验中我用的是JAVA语言实现关联规则中的Apriori算法。
具体代码如下:
Apriori算法的核心实现类为AprioriAlgorithm,
代码如下:
publicclassAprioriAlgorithm{
privateMap<
Integer,Set<
String>
>
txDatabase;
//事务数据库
privateFloatminSup;
//最小支持度
privateFloatminConf;
//最小置信度
privateIntegertxDatabaseCount;
//事务数据库中的事务数
Set<
freqItemSet;
//频繁项集集合
Set<
assiciationRules;
//频繁关联规则集合
publicAprioriAlgorithm(Map<
txDatabase,FloatminSup,
FloatminConf){
this.txDatabase=txDatabase;
this.minSup=minSup;
this.minConf=minConf;
this.txDatabaseCount=this.txDatabase.size();
freqItemSet=newTreeMap<
();
assiciationRules=newHashMap<
}
publicMap<
Float>
getFreq1ItemSet(){
Map<
Float>
freq1ItemSetMap=newHashMap<
Integer>
candFreq1ItemSet=this.getCandFreq1ItemSet();
Iterator<
Map.Entry<
it=candFreq1ItemSet
entrySet().iterator();
while(it.hasNext()){
Map.Entry<
entry=it.next();
//计算支持度
Floatsupported=newFloat(entry.getValue().toString())
/newFloat(txDatabaseCount);
if(supported>
=minSup){
freq1ItemSetMap.put(entry.getKey(),supported);
}
returnfreq1ItemSetMap;
getCandFreq1ItemSet(){
candFreq1ItemSetMap=newHashMap<
it=txDatabase.entrySet()
.iterator();
//统计支持数,生成候选频繁1-项集
Set<
itemSet=entry.getValue();
for(Stringitem:
itemSet){
key=newHashSet<
key.add(item.trim());
if(!
candFreq1ItemSetMap.containsKey(key)){
Integervalue=1;
candFreq1ItemSetMap.put(key,value);
Else
{
Integervalue=1+candFreq1ItemSetMap.get(key);
}
returncandFreq1ItemSetMap;
publicSet<
aprioriGen(intm,Set<
freqMItemSet){
candFreqKItemSet=newHashSet<
it=freqMItemSet.iterator();
originalItemSet=null;
originalItemSet=it.next();
itr=this.getIterator(originalItemSet,
freqMItemSet);
while(itr.hasNext()){
identicalSet=newHashSet<
//两个项集相同元素的集合(集合的交运算)
identicalSet.addAll(originalItemSet);
set=itr.next();
identicalSet.retainAll(set);
//identicalSet中剩下的元素是identicalSet与set集合中公有的元素
if(identicalSet.size()==m-1){//(k-1)-项集中k-2个相同
differentSet=newHashSet<
//两个项集不同元素的集合(集合的差运算)
differentSet.addAll(originalItemSet);
differentSet.removeAll(set);
//因为有k-2个相同,则differentSet中一定剩下一个元素,即differentSet大小为1
differentSet.addAll(set);