美文网首页
R - NA处理和数据标准化

R - NA处理和数据标准化

作者: 吴十三和小可爱的札记 | 来源:发表于2019-12-04 14:29 被阅读0次

    NA值处理

    数据NA值查看

    # 查看是否有NA值
    is.na(data)
    na.fail(DF)
    # 查看有多少NA值
    length(data[is.na(data)])
    # 显示出NA数超过某百分比值的行,如20%
    manyNAs(data , 0.2)
    

    NA值处理

    1. 直接删掉含NA的那行
    na.omit(data)
    
    1. 用某值将其替换掉,如0
    data[is.na(data)] <- 0 
    
    1. 通过探索相关性将NA值填补上
    cor(data , use = "complete.obs")
    
    1. the k-nearest neighbours
    # 通过means, median, weighAvg
    library(DMwR)
    cleanData <- knnImputation(data, k = 10, scale = T, 
                  meth = "weighAvg", distData = NULL)
    
    # 用没有缺失的值得中位数插入
    cleanData <- centralImputation(data)
    
    1. impute any missing values in the training set using proximities
    library(randomForest)  
    data.imputed <- rfImpute(variable1 ~ ., data = data, iter=6)
    
    1. missMDA :Impute the missing values of a dataset with the Principal Components Analysis model.

    数据标准化

    数据的标准化(normalization)是将数据按比例缩放,使之落入一个特定区间;目的是去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权,在某些比较和评价的指标处理中经常会用到。其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。

    目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响,但在数据标准化方法的选择上并没有通用的法则。

    数据标准化是不会改变原数据的分布状况的,否则相当于原始数据发生了改变,那就修改了源数据了。(并不)

    #  生成均匀分布数据
    set.seed(13)
    data <- runif(1000)
    scale <- scale(data)
    norm <- rnorm(1000)
    ggplot() + geom_density(aes(x = data))
    
    data.jpeg
    # scale(){base} 标准化
    scale <- scale(data)
    ggplot() + geom_density(aes(x = scale))
    
    scale.jpeg
    # min-max
    min_max = (data-min(data))/(max(data)-min(data))
    
    # qqplot 检测分布变化
    qqplot(data, min_max)
    
    data, min_max.jpeg
    log <- log10(data)/log10(max(data))
    qqplot(norm, log)
    
    norm, log.jpeg
    虽然分布改变了,但是也没有完全正态化。

    常用方法

    1. atan函数转换

    2. min-max标准化(Min-Max Normalization)

      也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。

      X=(x-min)/(max-min)

      其中max为样本数据的最大值,min为样本数据的最小值。

      优点:所有的值都会是正值,会更加反映数据的意义。

      缺陷:当有新数据加入时,可能导致max和min的变化,需要重新定义。

    3. log 转化

      log2

      log10

    4. scale(){base}

      x是数值矩阵,当center=TRUE时,为数据对象x按列进行中心化;当scale=TRUE时,为数据对象x按列进行标准化。

      • 中心化是把每个数据减去均值;
      • 标准化是在中心化后的数据基础上再除以数据的标准差;

    vegan 中数据标准化方法

    1. decostand() {vegan}(x, method, MARGIN, range.global, na.rm = FALSE)

      • total: 除以行和或列和 (default MARGIN = 1);
      • max:除以行或列的最大值(default MARGIN = 2);
      • freq:除以行或列的最大值,并乘以非零值的个数(default MARGIN=2);
      • normalize:使行或列的平方和等于1 (default MARGIN = 1);
      • range: 标准化使行或列的值在0 ... 1 (default MARGIN = 2).
      • standardize:标准化使行或列的和为1且方差为1(default MARGIN = 2);
      • pa: 将数据转换为0、1数据;
      • chi.square: 除以行和及列和的平方根;
      • hellinger: 采用total标准化以后再取平方根;
    2. wisconsin() {vegan}:除以列最大值,再除以行和。

    FactoMineR 内置标准化参数

    PCA(x, scale.unit = TRUE)
    

    相关文章

      网友评论

          本文标题:R - NA处理和数据标准化

          本文链接:https://www.haomeiwen.com/subject/fzqlgctx.html