Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R模型.矩阵设置_R - Fatal编程技术网

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个级别,但必须明确编码本问题中描述的每个级别: