跳过至内容

从 'gblinear' 增强器对象中提取系数,该对象是由 xgb.train() 在使用参数 booster="gblinear" 时生成的。

注意: 如果传入的增强器模型不是 'gblinear' 类型,此函数将报错。

用法

# S3 method for class 'xgb.Booster'
coef(object, ...)

参数

object

一个已拟合的 'gblinear' 类型的增强器对象。

...

未使用。

返回值

提取到的系数

  • 如果数据中每列只有一个系数,将返回一个向量,如果可用,可能包含特征名称,截距作为第一列。

  • 如果数据中每列有多个系数(例如,使用 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)