【发布时间】:2020-06-11 21:36:57
【问题描述】:
我有一个关于Catboost 的问题。我是否在建模之前对分类进行预处理?
如果我有 86 个变量,包括 1 个目标变量。在这 85 个变量中,有 2 个数值变量和 83 个分类变量(Factor 类型)。目标变量是二进制因子,1或0。
第 1 列和第 4 列到第 85 列是因子类型。
第 2 列和第 3 列是数字。
我对@987654324@ 中的cat_features 有点困惑。在参数中,我可以设置分类特征的向量。另外,我可以在catboost.load_pool中设置。
library(Catboost)
library(dplyr)
X_train <- train %>% select(-Target)
y_train <- (as.numeric(unlist(train[c('Target')])) - 1)
X_valid <- test %>% select(-Target)
y_valid <- (as.numeric(unlist(test[c('Target')])) - 1)
train_pool <- catboost.load_pool(data = X_train, label = y_train, cat_features = c(0,3:84))
test_pool <- catboost.load_pool(data = X_valid, label = y_valid, cat_features = c(0,3:84))
params <- list(iterations=500,
learning_rate=0.01,
depth=10,
loss_function='RMSE',
eval_metric='RMSE',
random_seed = 1,
od_type='Iter',
metric_period = 50,
od_wait=20,
use_best_model=TRUE,
cat_features = c(0,3:84))
catboost.train(train_pool, test_pool, params = params)
但是,在我运行上面的代码之后,我得到了一个错误:
Error in catboost.train(train_pool, test_pool, params = params) :
catboost/libs/options/plain_options_helper.cpp:339: Unknown option {cat_features} with value "[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84]"
有什么帮助吗?
【问题讨论】:
标签: r machine-learning error-handling categorical-data catboost