0

複数の期間のデータのサブセットに取り組んでおり、トレーニング セットで列とレベルの削減を行い、同じアクションを同じ構造の他のデータセットに適用したいと考えています。

Hmisc パッケージの dataframeReduce を使用してきましたが、関数を別のデータセットに適用すると、動作が少し異なります。

trainPredictors<-dataframeReduce(trainPredictors, 
                  fracmiss=0.2, maxlevels=20,  minprev=0.075)
testPredictors<-dataframeReduce(testPredictors, 
                  fracmiss=0.2, maxlevels=20,  minprev=0.075)
testPredictors<-testPredictors[,names(trainPredictors)]

backPredictors には、trainPredictors が保持する列が削除されているため、最後の行はエラーになります。他のすべてのセットには、trainPredictors に適用された変換が適用されている必要があります。

dataframeReduce または別の関数/コード ブロックを使用して、同じクリーンアップ アクションを複数のデータセットに適用する方法を知っている人はいますか?




http://trinkerrstuff.wordpress.com/2012/05/02/function-to-generate-a-random-data-set/の関数 NAins の使用

NAins <-  NAinsert <- function(df, prop = .1){
  n <- nrow(df)
  m <- ncol(df)
  num.to.na <- ceiling(prop*n*m)
  id <- sample(0:(m*n-1), num.to.na, replace = FALSE)
  rows <- id %/% m + 1
  cols <- id %% m + 1
  sapply(seq(num.to.na), function(x){
    df[rows[x], cols[x]] <<- NA
  }
  )
  return(df)
}
library("Hmisc")
trainPredictors<-NAins(mtcars, .1) 
testPredictors<-NAins(mtcars, .3)
trainPredictors<-dataframeReduce(trainPredictors, 
                                 fracmiss=0.2, maxlevels=20,  minprev=0.075)
testPredictors<-dataframeReduce(testPredictors, 
                                fracmiss=0.2, maxlevels=20,  minprev=0.075)
testPredictors<-testPredictors[,names(trainPredictors)]
4

1 に答える 1

0

目標が同じレベルの同じ変数を持つことである場合はdataframeReduce、2 回目の使用を避け、代わりにトレーニング セットの操作によって生成されたのと同じ列を使用し、dataframeReduce因子削減ロジックをテスト セットに適用する必要があります。後続の比較操作で必要とされる程度の相同性が得られる方法で。計画されている操作の場合はpredict、レベルを同じにする必要がありdataframeReduce、レベルで機能するようにコードを変更する必要があります。

    if (is.category(x) || length(unique(x)) == 2) {
        tab <- table(x)
        if ((min(tab)/n) < minprev) {
            if (is.category(x)) {
              x <- combine.levels(x, minlev = minprev)
              s <- "grouped categories"
              if (length(levels(x)) < 2) 
                s <- paste("prevalence<", minprev, sep = "")
            }
            else s <- paste("prevalence<", minprev, sep = "")
        }
    }

したがって、より良い問題ステートメントは、より良い戦略を生み出す可能性があります。これにはおそらく、セット全体とトレーニング セットおよびテスト セットに含まれるレベルと、予想されるテストまたは予測のレベルの両方を知る必要があります (ただし、まだ明言されていません)。

于 2013-06-03T15:20:18.687 に答える