问题标签 [catboost]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
49 浏览

categorical-data - catboost 中每个分类值的最小样本数

我如何告诉 CatBoost 将分类值与少量样本组合在一起。例如,假设我有一个名为 Country 的列,其中只有 1 个“柬埔寨”样本和 2 个“蒙古”样本,以及 999,998 个其他国家/地区,每个国家/地区至少有 100 个样本。我想告诉 CatBoost 不要费心在那些稀有国家做它的点击率魔法,而只是将它们视为“其他”。

0 投票
0 回答
321 浏览

python - 了解具有分类特征的 CatBoost 分类器树

我在 python 中使用 CatBoost 分类器来训练提升树。不幸的是,部署必须用不同的编程语言完成,因此我不能使用已经可用的 predict 方法,但我必须自己实现它。我尝试将模型导出到 json 文件并自己重新构造树(从而进行评分)。当没有分类特征时,它工作得很好。但是,如果我使用分类特征(单热编码与否),我不理解 json 文件中的值。例如,我的树中有这样一个拆分:

{ "split_index":16, "cat_feature_index":0, "value":1127826985, "split_type":"OneHotFeature" }。

获得 one-hot 编码的特征(cat_feature_index = 0 的特征)在我的数据中采用 4 个不同的值(100,200,700 和 800)。我想知道这个拆分到底是做什么的。

此外,如果我不使用单热编码,其中一个拆分看起来像:

{ "split_index":15, "split_type":"OnlineCtr", "border":4.99999999046, "ctr_target_border_idx":0 },

其中特征和数据同上。这种分裂究竟有什么作用?

请您告诉我在哪里可以找到树的解释和/或定义具有分类特征的树中的拆分的源代码?

0 投票
0 回答
50 浏览

python - 未找到方案 [C] 的处理器 - python catboost

问题:我打电话给 train_pool =Pool(train_file, column_description=description_file)我得到了这个错误:

火车文件:

catboost 版本:0.11.2

操作系统:Windows 10

0 投票
2 回答
335 浏览

xgboost - xgboost/lightgbm/catboost 背后的想法比较

我正在尝试决定,我将在实践中将以下哪一项用于回归任务:xgboost、lightgbm 或 catboost(python 3)。

那么,它们背后的总体思路是什么?为什么我应该选择一个,而不是另一个?

我对 0.781 与 0.782 之类的准确度分数的微小差异不感兴趣。结果应该是站得住脚的,我的工具应该是健壮的,使用方便。主力军。

0 投票
2 回答
526 浏览

python - Catboost 回归。函数外推

我是 ML 的新手,对 catboost 有疑问。所以,我想预测函数值(例如 cos | sin 等)。我回顾了一切,但我的预测总是直线

有没有可能,如果有,我该如何解决我的问题

我很乐意发表任何评论))

这张照片显示了我想要的:

在此处输入图像描述

0 投票
1 回答
1500 浏览

python - catboost:带有观察权重的评估/测试集

我正在处理一个包含人员列表(由财政代码索引)的数据集。目标变量是二进制的(1:买书,0:否则)。所有的预测变量都是分类的(例如:国籍、城市、道路、收入箱等)。一个财务代码可以重复两次,并且每个实例/观察值都有一个权重(如果不重复,则为 1,如果重复,则为 0 和 1 之间的值)。

例如,数据集看起来像

财政代码 | 重量 | 目标 | 分类信息

AAAAA1 | 0.98 | 0 |……

AAAAA1 | 0.02 | 1 |........

我有两个数据集(具有相同的变量),一个用于训练(X_train = 分类变量矩阵,y_train 是目标变量,train_weight 是训练集中每个观察的权重)和一个用于测试(具有相同的变量和含义:X_test、y_test 和 test_weight)。

我尝试了一个 Catboost 模型 - CatBoostClassifier。

初始化助推器和超参数

categorical_features_indices = np.where(X.dtypes == np.category)[0]

模型 = CatBoostClassifier(迭代次数=5000,学习率=0.1,深度=7,损失函数='Logloss',eval_metric='AUC')

拟合模型

model.fit(X_train,

问题是:我如何才能考虑到 TEST 集中的观察结果也有权重 (test_weight) ?你有什么主意吗?

我阅读了https://tech.yandex.com/catboost/doc/dg/concepts/python-reference_catboostregressor_fit-docpage/上的文档,但我没有发现任何有用的东西,而不是 lightgbm 文档(如果考虑另一个提升模型)。

0 投票
1 回答
746 浏览

machine-learning - CatBoost 基准测试中使用了什么样的预处理来编码分类变量?

我最近开始使用 CatBoost 对机器学习模型进行快速原型设计,这受到CatBoost 与 XGBoost、LightGBM 和 h2o 相比出色的性能基准的启发。

由于 XGBoost 只能接受数字特征,因此 CatBoost 和 XGBoost 之间的比较需要对分类特征进行通用预处理。我并不完全清楚在基准测试实验中使用什么样的预处理来编码分类特征,以及不使用简单的 one-hot 编码的理由。

我试图阅读实验的文档。据我了解,对分类特征进行编码的过程j大致相当于以下内容:

  1. train集合上,将响应分组yjmean函数聚合。让我们调用结果df_agg_j
  2. 左加入train集合并df_agg_j在分类列上j,删除原始分类列j并改用新的数字列
  3. 左加入valid集合并df_agg_j在分类列上j,删除原始分类列j并改用新的数字列

我仍然不明白需要“随机排列第 j 个分类特征和第 i 个对象的对象”,以及在“准备”部分下的最终公式中的分子加 1 和分母加 2分裂”的文档

可以在这里找到拆分和预处理数据的代码。

是否有关于本实验中用于编码分类特征的方法的解释(或文献中的一些参考),以及该方法与 one-hot 编码之间的比较?

0 投票
2 回答
3811 浏览

python - 如何在 Catboost Python 中将 numpy 数组作为分类特征传递

我想将 numpy 数组的第 12 列作为分类特征传递。

该列的 int 值从 1 到 10。

我试过这个:

但是得到了这个错误:

CatboostError: 'data' 是 np.float32 的 numpy 数组,表示没有分类特征,但 'cat_features' 参数指定了非零数量的分类特征

0 投票
1 回答
302 浏览

machine-learning - 我可以在拟合 CatBoostRegressor 时对评估集中的观察结果加权吗?

我正在尝试使用一组和一组来拟合CatBoostRegressor。有一个参数 ,来衡量 中的观察值,但我看不到该集合的等价物。trainevalsample_weighttrain_seteval

这是一个例子:

在哪里放置w_eval示例的正确位置?

0 投票
1 回答
1917 浏览

r - 无法在 R 中安装 catboost

catboost在 R 中下载时遇到问题。请帮助解决此问题,

我的版本如下: