Я делаю CatBoost для своего набора данных Titanic с несколькими категориальными функциями и целью двоичной классификации.
Данные выглядят так:
Embarked Parch Pclass Sex SibSp Survived IsCabin Deck IsAlone IsChild Title AgeBin FareBin FamilySize
0 S 0 3 male 1 0.0 0 Unknown 0 1 Mr Young Low 1
1 C 0 1 female 1 1.0 1 C 0 1 Mrs Adult High 1
2 S 0 3 female 0 1.0 0 Unknown 1 1 Miss Young Mid low 0
3 S 0 1 female 1 1.0 1 C 0 1 Mrs Adult High 1
4 S 0 3 male 0 0.0 0 Unknown 1 1 Mr Adult Mid low 0
Я сделал:
# Get train and validation sub-datasets
from sklearn.model_selection import train_test_split
x = train.drop(["Survived"], axis=1)
y = train["Survived"]
#Do train data splitting
X_train, X_test, y_train, y_test = train_test_split(x,y, test_size=0.2, random_state=42)
# Select categorical indices
cat_features_indices = np.where(x.dtypes != float)[0]
# Define CatBoost model
from catboost import Pool, CatBoostClassifier, cv
model = CatBoostClassifier(
eval_metric='Accuracy',
use_best_model=True,
random_seed=42
)
# Fit the model and evaluate
model.fit(X_train, y_train, cat_features=cat_features_indices, eval_set=(X_test, y_test))
pool = Pool(X_train, y_train, cat_features=cat_features_indices)
cv_data = cv(
pool,
model.get_params(),
fold_count=5
)
Ошибка трассировки:
CatBoostError Traceback (последний последний вызов) в 2 пулах, 3 model.get_params (), ----> 4 fold_count = 5 5)
/ opt / conda / lib / python3.6 / site-packages / catboost / core.py в cv (пул, params, dtrain, итерации, num_boost_round, fold_count, nfold, инвертированный, partition_random_seed, seed, shuffle, logging_level, стратифицированный, as_pandas, metric_period, verbose, verbose_eval, plot, early_stopping_rounds, save_snapshot, snapshot_file, snapshot_interval, folds, тип) 4564 с log_fixup (), plot_wrapper (plot, [_get_train_c_irs]) (), pool, fold_count, инвертированный, partition_random_seed, случайный, стратифицированный, -> 4566 as_pandas, складки, тип) 4567 4568
_catboost.pyx в _catboost._cv ()
_catboost.pyx в _catboost._cv ()
CatBoostError: catboost / libs / metrics / metric.cpp: 4617: потеря [RMSE] несовместима с метрикой [Точность] (без поддержки классификации)
Справка будетБуду очень признателен, так как это действительно отстой. Спасибо!