簡體   English   中英

R model.matrix設置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM