繁体   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