为什么caret
重命名系数名称?
MCVE:
library(caret)
library(mlbench)
data(BostonHousing)
model <- train(medv ~ .,
data = BostonHousing,
method = "lm")
> model$coefnames
[1] "crim" "zn" "indus" "chas1" "nox" "rm" "age" "dis" "rad" "tax"
[11] "ptratio" "b" "lstat"
> colnames(BostonHousing)
[1] "crim" "zn" "indus" "chas" "nox" "rm" "age" "dis" "rad" "tax"
[11] "ptratio" "b" "lstat" "medv"
并且,结果包含chas1
,其中不存在数据。
我错过了caret
的内容吗?
答案 0 :(得分:3)
你不会错过插入符号中的某些内容。只需使用lm
即可获得相同的结果。
lm(medv ~., data = BostonHousing)
Call:
lm(formula = medv ~ ., data = BostonHousing)
Coefficients:
(Intercept) crim zn indus chas1 nox rm age dis rad
3.646e+01 -1.080e-01 4.642e-02 2.056e-02 2.687e+00 -1.777e+01 3.810e+00 6.922e-04 -1.476e+00 3.060e-01
tax ptratio b lstat
-1.233e-02 -9.527e-01 9.312e-03 -5.248e-01
这与chas是包含值0和1的因子有关。系数chas1基于此因子。如果chas1 == 1,则使用系数,否则不使用。如果chas有3个级别(0,1,2),你会看到chas1和chas2显示为系数。