क्या आपने caret
के dummyVars
का उपयोग करने पर विचार किया है? यह मेरे लिए काम करता है और उचित रूप से तेज़ लगता है।
?dummyVars
model.matrix
और dummyVars
के डिफ़ॉल्ट व्यवहार की तुलना करता है, लेकिन इसके बारे में बहुत कुछ नहीं कहता है।
पर एक reproducible example एक छोटा सा प्रदर्शन बेंचमार्क के लिए:
n = 1e3 # observations
m = 1e2 # variables
some_levels <- sort(c(LETTERS, letters))
library('microbenchmark')
set.seed(1234)
df <- data.frame(
lapply(1:m, function(x){
switch(sample.int(3,1),
# "some continuous, some 0-1"
'1' = rnorm(n), '2' = rbinom(n, 1, 0.5),
# "some factors with many levels"
'3' = factor(sample(some_levels, n, TRUE),
levels=some_levels)
)
})
)
names(df) <- paste0('V',1:m)
#------------- it sounds like you are doing something like this --------------
frm <- as.formula(paste('~', paste(names(df), collapse='+')))
library('Matrix')
microbenchmark(
mm <- sparse.model.matrix(frm, df)
) # mean = .133 sec (YMMV)
#---------------- you could try something like this --------------------------
library('caret')
microbenchmark(
mm2 <- dummyVars(frm, df, fullRank=TRUE)
) # mean = .00954 sec (YMMV)
नोट fullRank = TRUE
ताकि "कारकों model.matrix
के अनुरूप होना करने के लिए इनकोड और जिसके परिणामस्वरूप वहाँ [वैसा] कोई रैखिक निर्भरता स्तंभों के बीच प्रेरित कर रहे हैं" प्रति ?dummyVars
। fullRank = TRUE
में में sparse=TRUE
के व्यवहार को प्रेरित करने के लिए fullRank = TRUE
को निकालना चाह सकता है। मुझे स्पष्ट दस्तावेज नहीं मिला।
शायद 'sparse.model.matrix' प्रोफ़ाइल देखें जहां बाधाएं हैं? –
यदि आप एक MWE भी प्रदान करेंगे तो यह अच्छा होगा ताकि हम आपके साथ काम करने का बेहतर विचार प्राप्त कर सकें। –
आगे की तुलना के लिए देखें: http://stackoverflow.com/questions/31373710/r-fast-way-to-create-a-sparse-model-matrix –