从 'gblinear' 增强器对象中提取系数,该对象是由 xgb.train()
在使用参数 booster="gblinear"
时生成的。
注意: 如果传入的增强器模型不是 'gblinear' 类型,此函数将报错。
用法
# S3 method for class 'xgb.Booster'
coef(object, ...)
返回值
提取到的系数
如果数据中每列只有一个系数,将返回一个向量,如果可用,可能包含特征名称,截距作为第一列。
如果数据中每列有多个系数(例如,使用
objective="multi:softmax"
时),将返回一个维度为[特征数量, 列数]
的矩阵,截距作为第一行。注意,列(多类别分类中的类别)维度将不会命名。
此处返回的截距将包含 'base_score' 参数(与模型转储中的 'bias' 或最后一个系数不同,它们没有加上 'base_score'),因此,通过调用 predict(..., outputmargin = TRUE)
应该得到与此相同的值,并且与使用 model.matrix(~., ...)
进行矩阵乘法得到的结果相同。
请注意,系数是通过先转换为字符串再转换回来获得的,因此与 predict.xgb.Booster 实际使用的系数相比,总会有非常小的精度损失。
示例
library(xgboost)
data(mtcars)
y <- mtcars[, 1]
x <- as.matrix(mtcars[, -1])
dm <- xgb.DMatrix(data = x, label = y, nthread = 1)
params <- xgb.params(booster = "gblinear", nthread = 1)
model <- xgb.train(data = dm, params = params, nrounds = 2)
coef(model)