在R data.table中,如何使用训练集的均值和标准差标准化测试集

时间:2020-04-18 22:53:45

标签: r data.table

我遇到了R data.table,它的功能给我留下了深刻的印象。我正在尝试应用我从Python / Scikit学到的知识。更具体地说,我尝试使用训练集的均值和标准差对测试集进行标准化。

# my training set
my_dt <- as.data.table(data.frame(list(a=c(1,2,3), b=c(3,4,5))))
# my testing set
my_dt2 <- as.data.table(data.frame(list(a=c(4,5,6), b=c(7,8,9))))

cols <- colnames(my_dt)

# I calculate the column means and standard deviation
my_dt_colmean <- my_dt[,lapply(.SD, mean), .SDcols=cols]
my_dt_colsd <- my_dt[,lapply(.SD, sd), .SDcols=cols]

# How to apply to the testing set. I tried to use the following but it is not correct.
my_dt2[, lapply(.SD, function(x) (x - my_dt_colmean[x])/my_dt_colsd[x]), .SDcols=cols]

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在这里,我们可以使用(m3u8 or mpd)

Map

my_dt2[, Map(f1, .SD, my_dt_colmean, my_dt_colsd), .SDcols = cols] # a b #1: 2 3 #2: 3 4 #3: 4 5 在哪里

f1