gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:56:50 25 4
gpt4 key购买 nike

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

该列具有从 1 到 10 的 int 值。

我尝试过这个:

cbr.fit(X_train, y,
eval_set=(X_train_test, y_test),
cat_features=[X_train[:,12]],
use_best_model=True,
verbose=100)

但出现此错误:

CatboostError: 'data' is numpy array of np.float32, it means no categorical features, but 'cat_features' parameter specifies nonzero number of categorical features

最佳答案

分类特征不能是浮点值。原因是分类特征被视为字符串,如果您从文件或数据帧读取特征值,我们必须具有相同的字符串。我们不能对浮点值执行此操作,但可以对字符串和整数执行此操作。

要解决您的问题,您需要使用数据框,其中具有分类特征的列将是整数或字符串类型。

例如,

from catboost import CatBoostClassifier, Pool
import pandas as pd

data = pd.DataFrame({'string_column': ['val0', 'val1', 'val2'],
'int_column': [1,2,3],
'float_column': [1.2,2,4.1]})
print(data)
print(data.dtypes)

train_data = Pool(
data=data,
label=[1, 1, -1],
weight=[0.1, 0.2, 0.3],
cat_features=[0, 1]
)

model = CatBoostClassifier(iterations = 10)
model.fit(X=train_data)

关于python - 如何将 numpy 数组作为 Catboost Python 中的分类特征传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54182849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com