数据预处理--数据集成
数据集成
数据集成是指将多个数据源中的数据合并,并存放到一个一致的数据存储(如数据仓库)中。这些数据源可能包括多个数据库、数据立方体或一般文件。
冗余是数据集成的另一个重要问题。两个数据集有两个命名不同但实际数据相同的属性,那么其中一个属性就是冗余的。另外,一个属性若可以通过另一个属性的一定变换得出,那么其中一个属性就可能是冗余的。
可以用相关分析对数据集冗余进行检测。给定两个属性,这种分析可以根据可用的数据,度量一个属性能在多大程度上包含另一个。对于定性数据,可以使用卡方检验。对于定量数据,我们使用相关系数和协方差,它们都能评估一个属性的值如何随另一个变化。若两个属性之间存在较大的相关系数,则其中一个可以被视作冗余而删除。
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) #去掉重复观测值后的数据集

本文来自博客园,作者:zhang-X,转载请注明原文链接:https://www.cnblogs.com/YY-zhang/p/15243522.html

浙公网安备 33010602011771号