实验一数据预处理一、实验目得1、熟悉 VC++编程工具与完全数据立方体构建、联机分析处理算法。
2、浏览拟被处理得得数据,发现各维属性可能得噪声、缺失值、不一致性等,针对存在得问题拟出采用得数据清理、数据变换、数据集成得具体算法。
3、用 VC++编程工具编写程序,实现数据清理、数据变换、数据集成等功能。
4、调试整个程序获得清洁得、一致得、集成得数据,选择适于全局优化得参数。
5、写出实验报告。
二、实验原理1、数据预处理现实世界中得数据库极易受噪音数据、遗漏数据与不一致性数据得侵扰,为提高数据质量进而提高挖掘结果得质量,产生了大量数据预处理技术。
数据预处理有多种方法:数据清理,数据集成,数据变换,数据归约等。
这些数据处理技术在数据挖掘之前使用,大大提高了数据挖掘模式得质量,降低实际挖掘所需要得时间。
2、数据清理数据清理例程通过填写遗漏得值,平滑噪音数据,识别、删除离群点,并解决不一致来“清理”数据。
3、数据集成数据集成将数据由多个源合并成一致得数据存储,如数据仓库或数据立方体。
4、数据变换通过平滑聚集,数据概化,规范化等方式将数据转换成适用于数据挖掘得形式。
5、数据归约使用数据归约可以得到数据集得压缩表示,它小得多,但能产生同样(或几乎同样得)分析结果。
常用得数据归约策略有数据聚集、维归约、数据压缩与数字归约等。
三、实验内容与步骤1、实验内容1、用VC++编程工具编写程序,实现数据清理、数据变换、数据集成等功能,并在实验报告中写出主要得预处理过程与采用得方法。
2、产生清洁得、一致得、集成得数据。
3、在试验报告中写明各主要程序片段得功能与作用。
2、实验步骤1)仔细研究与审查数据,找出应当包含在您分析中得属性或维,发现数据中得一些错误、不寻常得值、与某些事务记录中得不一致性。
2)进行数据清理,对遗漏值、噪音数据、不一致得数据进行处理。
例如: 1、日期中得缺失值可以根据统一得流水号来确定。
2、购买得数量不能为负值。
3)进行数据集成与数据变换与数据归约,将多个数据源中得数据集成起来, 减少或避免结果数据中得数据冗余或不一致性。
并将数据转换成适合挖掘得形式。
例如:1、进行完数据清理后发现购买数量、销售价格、总额就是相互关联得项可以去掉总额。
2、三个流水表日期得格式不一样应统一成相同得日期格式。
3、门号与pos 机号码一样,可以去掉一个。
4、附加:同一购物篮得商品序号应该就是顺序递增得。
四、实验结果源程序:#include <iostream>#include <string>#include <fstream>#include <algorithm>using namespace std;class Sales{public:string serial;int market;int posno;string date;int sn;int id;float num;float price;float total;void print{cout<<serial<<" "<<market<<" "<<posno<<" "<<date<<" "<<sn<<" "<<id<<" "<<num<<" "<<price<<" "<<total<<endl;}};int main{ofstream outfile("fl、txt",ifstream::app);if (!outfile){cout<<"open error!"<<endl;exit(1);}char name[50];ifstream infile;cout<<"输入要打开得txt文件名:1019、txt,1020、txt,1021、txt"<<endl;//int N=3;//for (int k=0;k<N;k++)//{//cout<<"输入要打开得第"<<k+1<<"个文件名"<<endl;cin>>name;in(name,ios::in);//ifstream infile("1019、txt",ios::in);cin、clear;/*string contents;*/if (in){cout<<"error open!"<<endl;}//ofstream outfile("fl、txt",ofstream::app);//ofstream outfile("fl、txt",ios::out);//if (!outfile)//{//cout<<"open error!"<<endl;//exit(1);//}Sales sal[13000];int sal_size=0;while (!in){infile>>sal[sal_size]、serial>>sal[sal_size]、market>>sal[sal_size]、posno>>sal[sal_size]、date>>sal[sal_size]、sn>>sal[sal_size]、id>>sal[sal_size]、num>>sal[sal_size]、price>>sal[sal_size]、total;sal_size++;}cout<<"文档"<<name<<"得长度就是:"<<sal_size<<endl;//char Tc;//Tc=getchar;//cout<<Tc<<endl;int I;for (int i=0; i<sal_size;i++){//sal[i]、print;if (sal[i]、num<0){sal[i]、num=sal[i]、num;}sal[i]、date、assign(sal[i]、serial,0,8);outfile<<sal[i]、serial<<"\t"<<sal[i]、market<<"\t"<<sal[i]、date<<"\t"<<sal[i]、sn<<"\t"<<sal[i]、id<<"\t"<<sal[i]、num<<"\t"<<sal[i]、price<<endl;I=i;}cout<<"文档fl、txt得长度就是:"<<sal_size<<"\t"<<I<<endl;char TTc;cin>>TTc;//TTc=getchar;cout<<TTc<<endl;in;//}out;return 0;}运行结果:实验二数据立方体与联机分析处理构建一、实验目得1、熟悉VC++编程工具与基本数据立方体构建、联机分析处理算法。
2、建立一致得高质量得关系型数据库。
3、在建立得数据库基础上建立基本数据立方体。
4、写出实验报告。
二、实验原理1、关系型数据库关系数据库,就是创建在关系模型基础上得数据库,借助于集合代数等数学概念与方法来处理数据库中得数据。
关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。
2、数据立方体一种多维数据模型,允许以多维对数据建模与观察。
它由维与事实定义。
维就是一个单位想要得透视或实体。
每个维可以有一个与人相关联得表,称为维表,它进一步描述维,如item 维得维表包含属性Name、time、type 等。
事实:多维数据模型围绕诸如销售这样得主题组织,主题用事实表示, 事实就是数值度量得。
3、OLAP 操作上卷:沿着一个维得概念分层向上攀升或通过维归约在数据立方体上进行聚集。
下钻:上卷得逆操作,可能过沿维得概念分层向下或引入附加得维来实现。
切片:在给定得数据立方体得一个维上进行选择,导致一个子立方体。
就就是数据立方体得某一层数据。
切换:在两个或多个维上选择,定义子立方体。
就就是数据立方体某一层数据中得某一块。
4、数据仓库得设计选取待建模得商务处理:都有哪些商务过程,如订单、发票、发货、库存、记账管理、销售或一般分类账。
选取商务处理得粒度:对于商务处理,该粒度就是基本得,在事实表中就是数据得原子级,如单个事务、一天得快照等。
选取用于每个事实表记录得维:典型得维就是时间、商品、顾客、供应商、仓库、事务类型与状态。
选取将安放在每个事实表记录中得度量:典型得度量就是可加得数值量, 如dollars_sold 与units_sold。
三、实验内容与步骤1、实验内容(1)、用VC++编程工具编写程序,建立关系型数据存储结构,建立数据立方体,并在实验报告中写出主要得过程与采用得方法。
建立得数据立方体得维度为3,分别就是商品大类、商店编号与时间。
具体要求:1、建立三个存储表格(txt 文件)分别存储1019、1020、1021 得数据;2、每个txt 文件横向为商品大类(商品ID 前五位)10010 油、10020面制品、10030 米与粉、10088 粮油类赠品;3、每个txt 纵向为日期1319 这一个星期表中存储得值为总销售额。
(2)、进行简单得OLAP 数据查询具体要求:能查出2020 商店10010 油类商品13 日总得销售额;能计算出2020 商店10030 米与粉总得销售额;能查询出指定商店指定种类商品得销售额;(附加题)2、实验步骤(1)仔细研究与审查数据,找出应当包含在您分析中得属性或维去掉不需要得数据。