mlrパッケージを使用して新しいデータを予測する場合、元のデータの前処理で必要な情報が使用されるように新しいデータを前処理する方法。例えば。小さな因子レベルをマージし、新しいデータセットの頻度が最初のデータセットと異なる場合、結果の因子レベルは異なる可能性があり、予測は不可能です。注:ここではモデルのトレーニング時に新しいデータがまだ利用できないと仮定していますが、これはテストデータではなく、新しいデータの予測に関するものです。それでは、新しいデータの前処理はどのようにmlrで行われるはずですか?ここで私は前処理にエラーにつながる新しいデータセットを新しいタスクを作成した例です。mlrパッケージを使用して予測のためのnewdataを事前処理する方法
library(mlr)
a <- data.frame(y=factor(c(1,1,1,1,1,1,1,1,0,0,1,0)),
x1=rep(c("a","b", "c"), times=c(10,1,1)))
# most frequent x1 factor is "a"
aTask <- makeClassifTask(data = a, target = "y", positive="1")
aTask <- mergeSmallFactorLevels(aTask, cols=c("x1"), min.perc=0.1)
# combines "b" and "c" into factor ".merged"
getTaskData(aTask)
aLearner <- makeLearner("classif.rpart", predict.type = "prob")
model <- train(aLearner, aTask)
b <- data.frame(y=factor(c(1,0,1,1,1,1,1,1,0,0,1,0)),
x1=rep(c("a","b", "c"), times=c(1,10,1)))
# most frequent x1 factor is "b"
# target would be made up, because at this stage there would be now target
# variable availabel
newdataTask <- makeClassifTask(data = b, target = "y", positive="1")
newdataTask <- mergeSmallFactorLevels(newdataTask, cols="x1",
min.perc = 0.1)
# combines "a" and "c" into factor ".merged"
getTaskData(newdataTask)
pred <- predict(model, newdataTask)
#Error in model.frame.default(Terms, newdata, na.action = na.action,
# xlev = attr(object, :
#Faktor 'x1' hat neue Stufen b (= factor 'x1' has new level b)
私の解決策の別の問題は、新しいタスクが利用できないでしょうターゲット変数を必要としているようだということです新しいデータセットの場合