В R data.table, как стандартизировать тестовый набор со средним и стандартным отклонением обучающего набора - PullRequest
1 голос
/ 19 апреля 2020

Я столкнулся с 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 голосов
/ 19 апреля 2020

Здесь мы можем использовать 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 равно

f1 <- function(x, y, z) (x - y)/z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...