[英]R model.matrix setup
我有一個數據集,我使用model.matrix()
函數將因子變量轉換為虛擬變量。 我的數據有10列,每個都有3個級別(2,3,4),我一直在為每個列分別創建虛擬變量。
xFormData <- function(dataset){
mm0 <- model.matrix(~ factor(dataset$type) , data=dataset)
mm1 <- model.matrix(~ factor(dataset$type_last1), data = dataset)
mm2 <- model.matrix(~ factor(dataset$type_last2), data = dataset)
mm3 <- model.matrix(~ factor(dataset$type_last3), data = dataset)
mm4 <- model.matrix(~ factor(dataset$type_last4), data = dataset)
mm5 <- model.matrix(~ factor(dataset$type_last5), data = dataset)
mm6 <- model.matrix(~ factor(dataset$type_last6), data = dataset)
mm7 <- model.matrix(~ factor(dataset$type_last7), data = dataset)
mm8 <- model.matrix(~ factor(dataset$type_last8), data = dataset)
mm9 <- model.matrix(~ factor(dataset$type_last9), data = dataset)
mm10 <- model.matrix(~ factor(dataset$type_last10), data = dataset)
dataset <- cbind(dataset, mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7, mm8, mm9, mm10)
dataset
}
我想知道這是否是錯誤的過程,因為在對數據運行randomForest
並繪制變量重要性后,它會單獨顯示不同的虛擬變量列。 因此,列61-63是第10列的3個虛擬變量, randomForest
將第62列視為重要的預測因子。
我有兩個問題:
1)這樣可以嗎?
2)如果沒有,我如何對虛擬變量進行分組,以便rf知道它們在一起?
這是可以的,如果你把因素留作因素,那么無論如何都會在幕后發生。 對於大多數機器學習目的,不同級別的因子是不同的特征。 考慮一個隨機的例子,比如test outcome ~ school
:也許去學校A可以預測你是否通過考試,但不是學校B或學校C.然后,學校的A功能將是有用的,但不是其他的。
這包含在一個caret
文件中: http : //cran.r-project.org/web/packages/caret/vignettes/caretMisc.pdf
此外, caret
包含的cars
數據集應該是一個有用的示例。 它包含2個因素 - “制造商”和“汽車類型” - 已經虛擬編碼為一系列數字功能,用於機器學習目的。
data(cars, package='caret')
head(cars)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.