0

複数の列を持つデータセットがあり、そのうちの 1 つがgender. 私が理解している限り、標準オプションを使用すると、すべての変数が等しく扱われるメトリックが計算されますが、たとえば、近隣を検索するときに同じものを使用することが強く推奨される場合にknnImputation()、いくつかのルールを作成したいと考えています(たとえば、総重量または同じ性別の行のみが選択されます (これは、トレーニング セットとテスト セットの両方を分割してから再組み立てすることで実行できますが、もっと簡単な方法が存在する可能性があります))。gendergender

代入関数kNNImpute()のパラメーターとメソッドのhasがあることがわかります。柔軟で編集しやすいルールを作成するにはどうすればよいですか (たとえば、そのようなものの関数として記述されます)。impute.fnknnImputation()meth

4

1 に答える 1

1

gこれは変数の選択を行いませんが、コメントで提案したように、性別が一致する行のみを使用して kNN を使用して代入します。

Sys.setenv("PKG_CXXFLAGS"="-std=c++0x") # needed for the lambda functions in Rcpp
# install/load package, create example data
devtools::install_github("alexwhitworth/imputation")
library(imputation)

set.seed(1345)
g <- sample(c("M", "F"), 100, replace=T)
a <- matrix(rnorm(1000), ncol=10)
a[a>1.5] <- NA
df <- data.frame(a,g)

# subset by gender, exclude character column from kNN (which doesn't 
# handle character variables)
df_f <- kNN_impute(df[df$g == "F", 1:10], k= 3, q= 2, check_scale = FALSE, parallel= FALSE)
df_m <- kNN_impute(df[df$g == "M", 1:10], k= 3, q= 2, check_scale = FALSE, parallel= FALSE)

# recombine. Can use rownames as key
df2 <- data.frame(rbind(df_f$x, df_m$x))
df2 <- df2[order(as.integer(rownames(df2))),]
df2$g <- df$g
于 2015-12-04T22:42:34.360 に答える