小编ish*_*hak的帖子

如何保存data.frame-to-model.matrix的映射并将其应用于新观察值?

一些建模功能,例如glmnet(),要求(或仅允许)将数据作为预测器矩阵和响应矩阵(或向量)传递,如使用公式所示。在这些情况下,通常情况是该predict()方法(例如predict.glmnet())要求newdata参数提供一个预测器矩阵,该矩阵具有与训练模型相同的特征。

当数据框具有因子(R的分类数据类型)时,创建预测变量矩阵的便捷方法是使用该model.matrix()函数,该函数会自动为分类变量创建虚拟特征:

# this is the dataframe and matrix I want to use to train the model
set.seed(1)
df <- data.frame(x1 = factor(sample(LETTERS[1:5], replace = T, 20)),
                 x2 = rnorm(20, 100, 5),
                 x3 = factor(sample(c("U","L"), replace = T, 20)),
                 y = rnorm(20, 10, 2))

mm <- model.matrix(y~., data = df)
Run Code Online (Sandbox Code Playgroud)

但是,当我引入一个带有新观察结果的数据框时,它仅包含原始数据框中因子水平的一个子集,model.matrix()(可预测地)返回一个具有不同虚拟特征的矩阵。无法使用此新矩阵,predict.glm()因为它没有模型期望的相同功能:

# this is the dataframe and matrix I want to predict on
set.seed(1) …
Run Code Online (Sandbox Code Playgroud)

r matrix prediction dataframe dummy-variable

3
推荐指数
1
解决办法
1432
查看次数

标签 统计

dataframe ×1

dummy-variable ×1

matrix ×1

prediction ×1

r ×1