r - R Catboost处理分类变量

标签 r machine-learning error-handling categorical-data catboost

我有一个关于Catboost的问题。是否在建模之前对分类进行预处理?

如果我有86个变量,其中包括1个目标变量。在这85个变量中,有2个数字变量和83个类别变量(Factor类型)。目标变量是二进制因子1或0。

第1列以及第4列至第85列是因子类型。
第2列和第3列是数字。

我对cat_features中的catboost.train()有点困惑。在参数中,我可以设置一个分类特征 vector 。另外,我可以设置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中尝试过CatBoost,但请参见此页面上的示例:
https://catboost.ai/docs/concepts/r-reference_catboost-train.html
看来您只在load_pool()调用中传递了类别变量,而在train()调用中传递了 NOT
(这与Python API的工作方式不同,在Python API中,cat_features在Python fit()调用中传递。)
建议:将所有类别变量归类到最左侧的列中。这样,您就可以更简单地创建 vector 。我还检查了我的代码以确保我做对了...

关于r - R Catboost处理分类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60440590/

相关文章:

r - R中的静态变量

r - "Error in namespaceExport(ns, exports) : undefined exports"是什么意思?

python - 尝试从Darksky API获取值列表时出错

javascript - shinyBS 观察 bsCollapsePanel 的切换

machine-learning - 强化学习中相同状态的不同奖励

python - StandardScalar Fit_Transform 出错

machine-learning - Pytorch:为什么batch是默认LSTM中的第二个维度?

exception - 在哪里捕获此错误?

java - 安卓错误: Unable To Start Activity

r - 当我尝试在 dplyr group_map 函数中使用 defuse-inject 模式时失败