Как вы находите оценку F1 для каждого класса мультиклассового классификатора Catboost? Я уже прочитал документацию и github repo , где кто-то задает тот же вопрос. Тем не менее, я не могу понять, кузнечное дело для достижения этой цели. Я понимаю, что должен использовать параметр custom_metric
в CatBoostClassifier()
, но я не знаю, какие аргументы допустимы для custom_metric
, когда я хочу получить оценку F1
для каждого класса моего мультиклассового набора данных.
Предположим, у вас есть набор игрушечных данных (из документации):
from catboost import Pool
cat_features = [0, 1, 2]
data = [["a","b", 1, 4, 5, 6],
["a","b", 4, 5, 6, 7],
["c","d", 30, 40, 50, 60]]
label = [0, 1, 2]
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.2)
train_pool = Pool(X_train, y_train, cat_features=categorical_features_indices)
validate_pool = Pool(X_test, y_test, cat_features=categorical_features_indices)
params = {"loss_function": "MultiClass",
"depth": symmetric_tree_depth,
"num_trees": 500,
# "eval_metric": "F1", # this doesn't work
"verbose": False}
model = CatBoostClassifier(**params)
model.fit(train_pool, eval_set=validate_pool)