Категориальные функции не могут быть значениями с плавающей запятой. Причина этого в том, что категориальные объекты обрабатываются как строки, и мы должны иметь одну и ту же строку в случае, если вы читаете значение функции из файла или из фрейма данных. Мы не можем сделать это для значений с плавающей запятой, но мы можем сделать это для строк и целых чисел.
Для решения вашей проблемы вам нужно использовать фрейм данных, в котором столбцы с категориальными характеристиками будут иметь целочисленный или строковый тип.
Например,
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)