数据预处理--数据集成

数据集成

数据集成是指将多个数据源中的数据合并,并存放到一个一致的数据存储(如数据仓库)中。这些数据源可能包括多个数据库、数据立方体或一般文件。

冗余是数据集成的另一个重要问题。两个数据集有两个命名不同但实际数据相同的属性,那么其中一个属性就是冗余的。另外,一个属性若可以通过另一个属性的一定变换得出,那么其中一个属性就可能是冗余的。

可以用相关分析对数据集冗余进行检测。给定两个属性,这种分析可以根据可用的数据,度量一个属性能在多大程度上包含另一个。对于定性数据,可以使用卡方检验对于定量数据,我们使用相关系数和协方差,它们都能评估一个属性的值如何随另一个变化。若两个属性之间存在较大的相关系数,则其中一个可以被视作冗余而删除。

x<-cbind(sample(c(1:50),10),sample(c(1:50),10))  #生成有两列不相关的定性数据组成的矩阵

chisq.test(x)  #对矩阵x进行卡方检验,检验两列是否相关

 

结果分析:上述定性数据卡方检验结果显示,p-value<0.05,即在0.05显著性水平下拒绝相关的原假设,即变量不相关。

协方差为正,表示两个属性趋向于一起改变,即一个属性的某个观测值如果大于期望,则另一个属性的对应观测值很可能大于其期望。协方差为负,则表示两个属性趋向于相反方向改变。

x<-cbind(rnorm(10),rnorm(10))

cor(x)  #计算两列数据的相关系数

 

cov(x)   #计算两列数据的协方差

 

结果分析:由上述结果可以看出,两列数据的相关系数为0.4.23806,可以认为相关系数较小,两列之间的相关性不足以将两列数据视为冗余数据,无须删除。从协方差结果可以看出,两列协方差为正,两列趋于一同改变。

除了检测属性间的冗余外,还应该检测观测值是否存在重复。

x<-cbind(sample(c(1:10),10,replace = F),rnorm(10),rnorm(10))

#随机生成数据集,其中第1列为样本编号,若样本编号相同则认为存在重复  

head(x)   #去掉重复值前的若干观测值

 

y<-unique(x[,1])    #去掉重读样本编号

sub<-rep(0,length(y))    #生成列向量备用

for(i in 1:length(y)){        #循环根据样本编号筛选数据集,去掉重复观测值

  sub[i]<-which(x[,1]==y[i])[1]

}

x<-x[sub,]   

head(x)   #去掉重复观测值后的数据集

 

posted @ 2021-09-08 16:57  zhang-X  阅读(672)  评论(0)    收藏  举报