为什么在stats
包的model.matrix
函数的公式中使用-1
?
training_matrix <-model.matrix(Survived ~.-1, data = training)
这里使用的是标准的titanic
数据集。
文档中也提到,可以通过model.matrix
函数和-1
标记来实现独热编码,前提是数据集中已经正确声明了因子和数值变量。
代码如下:
data_1_matrix <-model.matrix(~.-1, data = data_1)
这个-1
到底有什么作用?
回答:
-1
确保模型矩阵中没有常数项。如果你使用的是
training_matrix <-model.matrix(Survived ~., data = training)
那么模型矩阵中会包含一列全为1的值,并且会省略一个类别,以确保模型不会受到多重共线性的影响。
使用常数还是不使用,取决于用户的偏好:如果你使用常数,模型中会有一个“参考类别”。如果你不使用,就没有参考类别。