R模型.矩阵设置
我有一个数据集,我使用R模型.矩阵设置,r,R,我有一个数据集,我使用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 =
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
}
xFormData这没关系,如果您将因子作为因子,那么在幕后会发生什么。对于大多数机器学习目的来说,因子的不同级别是不同的特征。想象一个随机的例子,如测试结果~学校
:也许去学校a可以很好地预测你是否通过了测试,但不是学校B或学校C。那么,学校a功能将是有用的,而不是其他功能
这在一个caret
vignette文档中介绍:
此外,插入符号
中包含的cars
数据集应该是一个有用的示例。它包含两个因素——“制造商”和“车型”——它们被虚拟编码为一系列数字特征,用于机器学习
data(cars, package='caret')
head(cars)
您不需要创建虚拟变量:确保它们是因子(而不是数字)就足够了。@VincentZoonekynd这实际上是对OP发现其机器学习工作流不能使用因子编码功能的后续操作。谢谢。作为后续行动,我认为如果你这样做,你不能使用n-1个级别,但必须明确编码本问题中描述的每个级别: