河北工业大学大数据挖掘实验报告材料
- 格式:doc
- 大小:631.00 KB
- 文档页数:67
实验一数据预处理
一、实验目的
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
#include
#include
#include
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< < } }; int main() { ofstream outfile("fl.txt",ifstream::app); if (!outfile) { cout<<"open error!"< exit(1); } char name[50]; ifstream infile; cout<<"输入要打开的txt文件名:1019.txt,1020.txt,1021.txt"< //for (int k=0;k //{ //cout<<"输入要打开的第"< cin>>name; infile.open(name,ios::in);//ifstream infile("1019.txt",ios::in); cin.clear(); /*string contents;*/ if (infile.fail()) { cout<<"error open!"< } //ofstream outfile("fl.txt",ofstream::app); //ofstream outfile("fl.txt",ios::out); //if (!outfile) //{ //cout<<"open error!"< //exit(1); //} Sales sal[13000]; int sal_size=0; while (!infile.eof()) { infile>>sal[sal_size].serial>>sal[sal_size].market>>sal[sal_size].posno>>sal[sal_siz e].date>> sal[sal_size].sn>>sal[sal_size].id>>sal[sal_size].num>>sal[sal_size].price>>sal[sal_ size].total; sal_size++; } cout<<"文档"< //char Tc; //Tc=getchar(); //cout< int I; for (int i=0; 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<