当前位置: 首页 > 知识库问答 >
问题:

使用CatBooked分类器转换分类列

段干河
2023-03-14

我试图应用CatBoost到我的一个列的分类功能,但得到以下错误:

CatBoostError: Invalid type for cat_feature[non-default value idx=0,feature_idx=2]=68892500.0 : cat_features must be integer or string, real number values and NaN values should be converted to string.

我可以使用一热编码,但是这里的许多人说CatBoost似乎更擅长处理这个问题,不太容易过度拟合模型。

我的数据由三栏组成,“国家”、“年份”、“电话用户”。目标是'国家'和'年份'和'电话用户'是功能。

数据:

Country   year   phone users
Ireland   1989   978
France    1990   854
Spain     1991   882
Turkey    1992   457
...       ...    ...

到目前为止我的代码:

X = df.loc[115:305]
y = df.loc[80:, 0]

cat_features = list(range(0, X_pool.shape[1]))
Output: [0, 1, 2]

X_train, X_val, y_train, y_val = train_test_split(X_pool, y_pool, 
test_size=0.2, random_state=0)

cbc = CatBoostClassifier(iterations=5, learning_rate=0.1)

cbc.fit(X_train, y_train, eval_set=(X_val, y_val), 
cat_features=cat_features, verbose=False)

print("Model Evaluation Stage")

我是否需要运行LabelEncoder之前,适合到catBooked模型?我错过了什么?

共有1个答案

赵钊
2023-03-14

正如问题中包含的错误消息中所述,所有分类功能都必须为string类型。要将'phone users'(或任何其他数据框列)转换为字符串,可以使用df['phone users']=df['phone users']。aType(str)

然后,CatBoost将使用一种热编码或目标编码(取决于所采用的唯一值的数量)对每个分类特征进行内部编码。无需预先使用LabelEncoderonehotcoder对分类特征进行编码,有关详细信息,请参阅CatBoost文档。

 类似资料:
  • 本文向大家介绍C#视频转换类分享,包括了C#视频转换类分享的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C#视频转换类的具体代码,供大家参考,具体内容如下 VideoConvert 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 这些转换器在所有数据库共享。 下面是实现LocationConverter,把位置转化成字符串: 作为3.0的TypeConverter可以在column-by-column基础上使用。

  • 当 Puppet 运行在一个节点上,它需要知道这个节点应该应用了哪些类。 例如,如果这是一个 web 服务器节点,它可能需要包含一个 apache 类。 将类映射到节点的一种简单方法是在配置清单里声明,例如下面是一个 nodes.pp 文件的例子: node web1 { include apache } 另外,你可以使用 外部节点分类器(external node classifier,E

  • 我是新来的ML在Python和非常困惑如何实现一个决策树与分类变量,因为他们得到自动编码的和在。 我想做一个具有两个分类独立特征和一个依赖类的决策树。 我使用的数据帧如下所示: 我知道分类特征需要使用labelencoder和/或一个热编码器在scikit learn中编码。 首先,我尝试只使用标签编码器,但这并不能解决问题,因为开始将编码的变量视为连续变量。然后我从这篇文章中读到:OneHotE

  • 问题内容: 我一直在阅读有关文本分类的文章,并找到了几种可用于分类的Java工具,但我仍然想知道:文本分类与句子分类一样! 有没有专门针对句子分类的工具? 问题答案: “文本分类”和“句子分类”之间没有形式上的区别。毕竟,句子是一种文本。但是总的来说,当人们谈论文本分类时,恕我直言,他们指的是更大的文本单元,例如文章,评论或演讲。将政治人物的讲话归类为民主人士或共和党人比对推文进行分类要容易得多。

  • 译者:bat67 最新版会在译者仓库首先同步。 目前为止,我们以及看到了如何定义网络,计算损失,并更新网络的权重。 现在可能会想, 数据呢? 通常来说,当必须处理图像、文本、音频或视频数据时,可以使用python标准库将数据加载到numpy数组里。然后将这个数组转化成torch.*Tensor。 对于图片,有Pillow,OpenCV等包可以使用 对于音频,有scipy和librosa等包可以使用