实验一、数据预处理
学院计算机科学与软件学院
•实验目的:
(1)熟悉 VC++编程工具和完全数据立方体构建、联机分析处理算法。
(2)浏览拟被处理的的数据,发现各维属性可能的噪声、缺失值、不一致
性等,针对存在的问题拟出采用的数据清理、数据变换、数据集成的具体算法。
(3)用 VC++编程工具编写程序,实现数据清理、数据变换、数据集成等功
能。
(4)调试整个程序获得清洁的、一致的、集成的数据,选择适于全局优化
的参数。
•实验原理:
1 、数据预处理
现实世界中的数据库极易受噪音数据、遗漏数据和不一致性数据的侵扰,为
提高数据质量进而提高挖掘结果的质量,产生了大量数据预处理技术。
数据预处理有多种方法:数据清理,数据集成,数据变换,数据归约等。
这些数据处理技术在数据挖掘之前使用,大大提高了数据挖掘模式的质量,降低实际挖掘所需要的时间。
2 、数据清理
数据清理例程通过填写遗漏的值,平滑噪音数据,识别、删除离群点,并解
决不一致来“清理”数据。
3 、数据集成数据集成
数据集成将数据由多个源合并成一致的数据存储,如数据仓库或数据立方
体。
4 、数据变换
通过平滑聚集,数据概化,规范化等方式将数据转换成适用于数据挖掘的形式。
5 、数据归约
使用数据归约可以得到数据集的压缩表示,它小得多,但能产生同样(或几
乎同样的)分析结果。
常用的数据归约策略有数据聚集、维归约、数据压缩和数字归约等。
三、实验内容:
1 、主要代码及注释
头文件
#include<iostream>
#include<string>
#include<fstream>
#include<algorithm>
using namespace std;
1、建立存储结构
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;
}
};
2、打开源 txt 文件,并创建保存的 txt 文件
ifstream infile("1020.txt",ios::in);
/*string contents;*/
if(infile.fail())
{
7
cout << "error open!" << endl;
}
ofstream outfile("fl.txt",ios::out);
if(!outfile)
{
cout<<"open eror!"<<endl;
exit(1);
}
3、访问 txt 文件中的数据
while(!infile.eof())//判断 txt 是否结束
{
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++;
}
4、处理数据
(1)判断购买数量是否为负
if (sal[i].num<0)
{
sal[i].num=-sal[i].num;
}
(2)统一日期为流水号前 8 位(既可以填补缺失值,又统一格式,同学们也可以分步做,先填补缺失值再改成统一格式)
sal[i].date.assign(sal[i].serial ,0,8);
(3)保存处理过的数据同时删除冗余数据(总额,POS 机号)
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;
(4)关闭 txt 文件
infile.close();
outfile.close();
2 、实验数据
实验数据保存在1019、1020、1021三个txt文件中
•实验结果:
处理前的数据(1019.txt,只列出了一部分):
处理过程:
处理后的部分数据:
处理前的数据(1020.txt,只列出了一部分):
处理过程:
处理后的部分数据:
处理前的数据(1021.txt,只列出了一部分):
处理过程:
处理后的部分数据:。