如果有人可以告诉我如何在创建(训练和测试模型)时将ID变量保留为指示变量而不是预测变量,那将是非常好的。我正在使用H2o通过R.感谢有人能回应他们的想法。
答案 0 :(得分:2)
我认为更常见的使用术语"指标变量"是指二进制预测器(不是唯一标识符),但听起来您问的是,您是否可以将ID列保留在数据框中,而不是将其用于预测。
在H2O中很容易做到 - 您使用x
参数来指示哪些列应该用作预测变量,因此如果您将ID列留在其中,它将忽略它。虹膜数据示例:
library(h2o)
h2o.init()
iris$ID <- 1:nrow(iris) #add ID column
train <- as.h2o(iris)
fit <- h2o.gbm(x = 1:4, y = 5, training_frame = train) #fit a GBM
您可以通过查看变量重要性来查看未使用ID:
> h2o.varimp(fit)
Variable Importances:
variable relative_importance scaled_importance percentage
1 Petal.Width 258.856262 1.000000 0.563269
2 Petal.Length 195.480728 0.755171 0.425364
3 Sepal.Width 2.891532 0.011170 0.006292
4 Sepal.Length 2.332296 0.009010 0.005075
如果您在测试集上预测(此处我只是为了演示目的而使用训练集),那么模型已经知道忽略ID列。
> pred <- h2o.predict(fit, train)
> head(pred)
predict setosa versicolor virginica
1 setosa 0.9989301 0.0005656447 0.0005042210
2 setosa 0.9985183 0.0006462680 0.0008354416
3 setosa 0.9989298 0.0005663071 0.0005038929
4 setosa 0.9989310 0.0005660443 0.0005029535
5 setosa 0.9989315 0.0005649384 0.0005035886
6 setosa 0.9983457 0.0011517334 0.0005025218