【R言語】データ標準化処理


1、標準化——データ処理
preProcess(x, method = c("center", "scale"),  
       thresh = 0.95,  pcaComp = NULL,  na.remove = TRUE,  k = 5,  
       knnSummary = mean,  outcome = NULL,  fudge = 0.2,  numUnique = 3,  
       verbose = FALSE,  freqCut = 95/5,  uniqueCut = 10,  cutoff = 0.9, ...)   predict(object, newdata, ...)  
  • x:1つのマトリクスまたはデータボックスであり、非数値型変数については
  • は無視される.
  • method:データの標準化方法を指定します.デフォルトはcenterとscaleです.(この2つを同時に使用する必要があり、1つを選択すると中心化または平均化しか対応できない)
  • .
  • において、centerは予測変数値から平均値を減算することを示す.scaleは予測変数値を標準差で割ったものであるため、デフォルトの標準化方法は(x−mu)/std(x−mu)/stdである.
  • rangeメソッドを使用する場合、データ基準は[0,1]の範囲、すなわち(x−min)/(max−min)/(max−min)/(max−min)である.
  • ppMethods 
  • thresh:主成分分析(PCA)法を用いる場合、このパラメータは積算分散が少なくとも0.95
  • に達することを指定する.
  • pcaComp:主成分分析(PCA)法を使用する場合、thresh
  • よりも優先度の高い保持主成分数を指定することができる.
  • na.remove:デフォルト欠落値データの除去
  • k:欠落値をk-近隣メソッドで記入する場合は、5
  • として特定のk値を指定できます.
  • knnSummary:欠落値
  • の代わりにk個の近隣の平均値を用いる.
  • outcome:データセットの出力変数を指定し、BOX-COXでデータを変換する場合、このパラメータは出力変数
  • を指定する必要がある.
  • fudge:指定BOX-COX変換のlambda値変動範囲
  • numUnique:変数yによるBOX-COX変換
  • を推定する一意の値を指定
  • verbose:詳細な結果を出力する必要があるかどうかを指定する
  • object:preProcessオブジェクト
  • newdata:処理が必要な新しいデータセットを指定する
  • 2.iris例――scale(平均分散標準化)
    library(caret)
    library(dplyr)
    head(scale(iris[,1:4]))
    ##      Sepal.Length Sepal.Width Petal.Length Petal.Width
    ## [1,]   -0.8976739  1.01560199    -1.335752   -1.311052
    ## [2,]   -1.1392005 -0.13153881    -1.335752   -1.311052
    ## [3,]   -1.3807271  0.32731751    -1.392399   -1.311052
    ## [4,]   -1.5014904  0.09788935    -1.279104   -1.311052
    ## [5,]   -1.0184372  1.24503015    -1.335752   -1.311052
    ## [6,]   -0.5353840  1.93331463    -1.165809   -1.048667
    stand_scale 
    ##   Sepal.Length Sepal.Width Petal.Length Petal.Width
    ## 1   -0.8976739  1.01560199    -1.335752   -1.311052
    ## 2   -1.1392005 -0.13153881    -1.335752   -1.311052
    ## 3   -1.3807271  0.32731751    -1.392399   -1.311052
    ## 4   -1.5014904  0.09788935    -1.279104   -1.311052
    ## 5   -1.0184372  1.24503015    -1.335752   -1.311052
    ## 6   -0.5353840  1.93331463    -1.165809   -1.048667
    all(scale(iris[,1:4])==predict(stand_scale ,iris[,1:4])) #      ,          
    ## [1] FALSE

    3.irisの例――max-min(標準化)
    normalize 
    ##   Sepal.Length Sepal.Width Petal.Length Petal.Width
    ## 1   0.22222222   0.6250000   0.06779661  0.04166667
    ## 2   0.16666667   0.4166667   0.06779661  0.04166667
    ## 3   0.11111111   0.5000000   0.05084746  0.04166667
    ## 4   0.08333333   0.4583333   0.08474576  0.04166667
    ## 5   0.19444444   0.6666667   0.06779661  0.04166667
    ## 6   0.30555556   0.7916667   0.11864407  0.12500000
    stand_range 
    ##   Sepal.Length Sepal.Width Petal.Length Petal.Width
    ## 1   0.22222222   0.6250000   0.06779661  0.04166667
    ## 2   0.16666667   0.4166667   0.06779661  0.04166667
    ## 3   0.11111111   0.5000000   0.05084746  0.04166667
    ## 4   0.08333333   0.4583333   0.08474576  0.04166667
    ## 5   0.19444444   0.6666667   0.06779661  0.04166667
    ## 6   0.30555556   0.7916667   0.11864407  0.12500000
    all(iris_max==iris_max_prePro)#   ,        ,      
    ## [1] TRUE

    4.標準化されたデータの復元—salce(平均-分散標準化)
    たとえば、trainデータを標準化し、trainデータのパラメータでtestデータを標準化することがよくありますが、Rには内蔵された関数はありません.また、一部のモデルとデータにはアウトラインの違いがあり、標準化後にモデリングし、予測する必要があります.予測された値は標準化後のデータです.この場合、予測されたデータを実際のデータに復元する必要があります.この場合、元のデータの標準化パラメータが必要です.
    stand_scale % head(.,10)
    ##       Sepal.Length Sepal.Width Petal.Length Petal.Width
    ##  [1,]          5.1         3.5          1.4         0.2
    ##  [2,]          4.9         3.0          1.4         0.2
    ##  [3,]          4.7         3.2          1.3         0.2
    ##  [4,]          4.6         3.1          1.5         0.2
    ##  [5,]          5.0         3.6          1.4         0.2
    ##  [6,]          5.4         3.9          1.7         0.4
    ##  [7,]          4.6         3.4          1.4         0.3
    ##  [8,]          5.0         3.4          1.5         0.2
    ##  [9,]          4.4         2.9          1.4         0.2
    ## [10,]          4.9         3.1          1.5         0.1
    head(iris,10)
    ##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
    ## 1           5.1         3.5          1.4         0.2  setosa
    ## 2           4.9         3.0          1.4         0.2  setosa
    ## 3           4.7         3.2          1.3         0.2  setosa
    ## 4           4.6         3.1          1.5         0.2  setosa
    ## 5           5.0         3.6          1.4         0.2  setosa
    ## 6           5.4         3.9          1.7         0.4  setosa
    ## 7           4.6         3.4          1.4         0.3  setosa
    ## 8           5.0         3.4          1.5         0.2  setosa
    ## 9           4.4         2.9          1.4         0.2  setosa
    ## 10          4.9         3.1          1.5         0.1  setosa

    5.標準化されたデータを復元する—max-min
    stand_range % head(.,10)
    ##       Sepal.Length Sepal.Width Petal.Length Petal.Width
    ##  [1,]          5.1         3.5          1.4         0.2
    ##  [2,]          4.9         3.0          1.4         0.2
    ##  [3,]          4.7         3.2          1.3         0.2
    ##  [4,]          4.6         3.1          1.5         0.2
    ##  [5,]          5.0         3.6          1.4         0.2
    ##  [6,]          5.4         3.9          1.7         0.4
    ##  [7,]          4.6         3.4          1.4         0.3
    ##  [8,]          5.0         3.4          1.5         0.2
    ##  [9,]          4.4         2.9          1.4         0.2
    ## [10,]          4.9         3.1          1.5         0.1
    head(iris,10)
    ##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
    ## 1           5.1         3.5          1.4         0.2  setosa
    ## 2           4.9         3.0          1.4         0.2  setosa
    ## 3           4.7         3.2          1.3         0.2  setosa
    ## 4           4.6         3.1          1.5         0.2  setosa
    ## 5           5.0         3.6          1.4         0.2  setosa
    ## 6           5.4         3.9          1.7         0.4  setosa
    ## 7           4.6         3.4          1.4         0.3  setosa
    ## 8           5.0         3.4          1.5         0.2  setosa
    ## 9           4.4         2.9          1.4         0.2  setosa
    ## 10          4.9         3.1          1.5         0.1  setosa

    6.標準化データの復元:DMwR::unscale()関数
    unscale(vals, norm.data, col.ids)
    
        vals    :             ,          
        norm.data    :          ,    scale()           
        col.ids :           (         )  
    #   iris     7:3
    library(caret)
    library(dplyr)
    library(DMwR)
    ##         :grid
    library(e1071)
    
    
    
    #############################################################
    ##########      
    # 
    data(algae)
    algae[,4:12] %>% head() #              ,     a1(   ) ,      
    ##   mxPH mnO2     Cl    NO3     NH4    oPO4     PO4 Chla   a1
    ## 1 8.00  9.8 60.800  6.238 578.000 105.000 170.000 50.0  0.0
    ## 2 8.35  8.0 57.750  1.288 370.000 428.750 558.750  1.3  1.4
    ## 3 8.10 11.4 40.020  5.330 346.667 125.667 187.057 15.6  3.3
    ## 4 8.07  4.8 77.364  2.302  98.182  61.182 138.700  1.4  3.1
    ## 5 8.06  9.0 55.350 10.416 233.700  58.222  97.580 10.5  9.2
    ## 6 8.25 13.1 65.750  9.248 430.000  18.250  56.667 28.4 15.1
    normData % as.data.frame() ) #     
    normPs % head() #     ,    ,  0--1  
    ##          1          2          3          4          5          6 
    ## -0.4688077 -0.5577023 -0.5956463 -0.7180639 -0.4260693 -0.2741933
    algae[101:nrow(normData),"a1"] %>% head()#    
    ## [1] 16.5  7.0 58.7  8.7 17.0 12.3
    unscale(normPs,normData) %>% head()#        
    ##       [,1]
    ## 1 7.731243
    ## 2 7.678057
    ## 3 7.655355
    ## 4 7.582112
    ## 5 7.756814
    ## 6 7.847682