Python Catboost:多类 F1 分数自定义指标

2023-12-28

如何找到多类 Catboost 分类器每个类的 F1 分数?我已经读过文档 https://catboost.ai/docs/concepts/python-reference_catboostclassifier.htmlgithub 仓库 https://github.com/catboost/catboost/issues/490有人问同样的问题。但是,我无法弄清楚实现这一目标的代码设计。我明白我必须使用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)

你应该使用TotalF1

params = {
    'leaf_estimation_method': 'Gradient',
    'learning_rate': 0.01,
    'max_depth': 8,
    'bootstrap_type': 'Bernoulli',
    'objective': 'MultiClass',
    'subsample': 0.8,
    'random_state': 42,
    'verbose': 0,
    "eval_metric" : 'TotalF1',
    "early_stopping_rounds" : 100
    }

https://catboost.ai/docs/concepts/loss-functions-multiclassification.html https://catboost.ai/docs/concepts/loss-functions-multiclassification.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python Catboost:多类 F1 分数自定义指标 的相关文章

随机推荐

  • Python:为 __init__ 扩展 int 和 MRO

    在Python中 我试图扩展内置的 int 类型 这样做时 我想将一些关键字参数传递给构造函数 所以我这样做 class C int def init self val kwargs super C self init val Do som
  • 有没有我可以使用的文件选择器。我尝试了一些,但它们不起作用

    我尝试了几个文件选择器 但它们不起作用 请向我推荐一个带有示例代码的文件选择器 使用 file picker 包 也许 不工作你在android清单中写入权限
  • LINQ where 子句中的 async/await 不起作用

    我试图在 LINQ 语句中进行异步数据库查询 但遇到错误 下面的代码在没有 async await 的情况下运行良好 var newEntities repositoryMapping Mapper Map
  • 不同函子的容器

    我正在尝试找出一种方法来拥有函子容器 以便我可以将值传递给函子并对其进行修改 但是我无法让函子不受可以传递的类型和他们可以接受的论据数量 我对此的实际用途是我有一系列函子 它们都根据输入以某种方式更改 3D 向量 通过能够将这些函子存储在容
  • mkdir 的“-p”选项

    所以这似乎不是一个非常复杂的问题 但我找不到答案 我很困惑什么 p选项在 Unix 中起作用 我将它用于实验室作业 同时创建一个子目录 然后在该子目录中创建另一个子目录 它看起来像这样 mkdir p cmps012m lab1 这是一个具
  • 如何使用 Entity Framework 4.1“仅代码”流畅 API 映射 char 属性?

    我有一个具有 char 属性的对象 public class Product public char Code get set 实体框架似乎无法映射字符 当我从模型对象创建数据库架构时 数据库中缺少该字段 无论如何 我可以使用 Fluent
  • 在 Angular 5 上对 http 服务进行单元测试

    我对如何测试数据服务感到非常困惑 可能性太多 而且令人不知所措 我有这个简单的服务 Injectable export class DataService constructor private http HttpClient getDat
  • 量角器期望元素最终出现

    有没有办法期望元素最终出现在页面上 例如一种方式 browser wait protractor ExpectedConditions presenceOf element by partialLinkText Continue 1000
  • 使用 ResXResourceReader 时如何判断资源是嵌入文件还是嵌入字符串

    我有一个单独的应用程序 用于拼写检查我的 resx 文件 作为预构建事件运行 但是 如果 resx 文件包含文本文件 例如 xml 我的应用程序将加载该文件并尝试对其进行拼写检查 这并不是我真正想要它做的 有没有办法从 ResXResour
  • apt-get 错误:找不到“docker-ce”的版本“5:19.03.4~3-0~ubuntu-bionic”

    文档 https docs docker com install linux docker ce ubuntu 提供安装特定版本的语法docker ce sudo apt get install docker ce
  • 在 Linux 上为 Qt 应用程序获取 root 访问权限的正确方法

    Good day 背景 我正在为 Linux 系统创建一个 OpenVPN 包装应用程序 该应用程序已接近完成 我遇到了一个小障碍 OpenVPN 需要 root 访问权限才能修改路由表 添加和删除路由 这就是事情变得有点模糊和混乱的地方
  • Java语法解释-getMenuInflater()

    刚刚下载了 android studio 我正在使用大书呆子牧场 Android 编程指南来学习诀窍 当您启动 android studio 时 此代码已经在主活动文件中 Override public boolean onCreateOp
  • React 状态变量值显示为 null

    我正在尝试访问状态变量的值 但当我更改日期时它似乎为空 但如果我更改任何其他输入字段 我不会将其变为空 这里是link https stackblitz com edit react 6wbchf file src 2FApp js到 st
  • 如何在 J2ME 中分割字符串?

    如何在 J2ME 中有效地分割字符串 有一个StringTokenizer http download oracle com javase 1 4 2 docs api java util StringTokenizer html or S
  • 将 const char 转换为数组

    我正在尝试将 const char 转换为 char 这是我的代码 bool check const char word char temp 1 50 temp word return true 它是一个传入 const char 的函数
  • 为什么 ++i 不 || ++j && ++k 给出期望值

    我想知道为什么下面代码中k的值为1 I think i j k按照以下顺序执行 i j k 所以 在第一个片段中 i j i是真的 所以 j没有被评估 所以i 2 j 1 接下来 在第二个片段中 true k so k被评估 然后k 2 i
  • CUDA、cuPrintf 导致“未指定的启动失败”?

    我有一个内核 它以不同的网格大小运行两次 我的问题是 cuPrintf 当我没有的时候cudaPrintfInit 在内核运行之前和cudaPrintfDisplay stdout true and cudaPrintfEnd 内核运行后
  • RazorGenerator 无法看到自定义 cshtml 帮助程序

    我的 RazorGenerator 遇到问题 它无法编译使用我的自定义帮助程序的视图 App Code ViewHelper cshtml helper test System Web Mvc HtmlHelper html h4 Test
  • 单选按钮水平对齐

    如何使这两个单选按钮水平对齐 无论我如何尝试 它们都会保持垂直对齐或遍布各处 截至目前 它们是垂直对齐的 但我需要左侧的标签和右侧的转盘并靠近在一起 fieldset legend Payment Method legend div cla
  • Python Catboost:多类 F1 分数自定义指标

    如何找到多类 Catboost 分类器每个类的 F1 分数 我已经读过文档 https catboost ai docs concepts python reference catboostclassifier html和github 仓库