首页 > 解决方案 > cat boost 特征在训练数据中具有“分类”类型,但在测试数据集中具有“浮点”类型

问题描述

我正在使用 catboostclassifier,我有一个训练数据集和一个验证数据集。每个数据集都有相同的 5 列,并且有一列名为 'colC' 是分类的(列 'colC' 被格式化为 int)。我测试了数据框,并且在“colC”列中,两个数据框的数据类型相同。

当我执行下一个代码时,出现错误:

val_pool = Pool(X_validation, y_validation)

estimator.fit(X_train, y_train, eval_set = val_pool, sample_weight = sample_weights, cat_features = ['colC'])

错误是下一个:

catboost/libs/data/features_layout.cpp:391: Feature #3 has 'Categorical' type in training data, but 'Float' type in test dataset #0

可能是哪个原因?

标签: pythoncategorical-datacatboost

解决方案


对于遇到这篇文章的其他人:当我遇到这个问题时,我设法通过在 Pool 中指定 cat_features 列表以及 fit 来解决这个问题。

val_pool = Pool(X_validation, y_validation, cat_features = ['colC'])

推荐阅读