多分类metric的macro-averge与micro-average

macro-average是每个类有相同的权重,precision、recall或f1_score,先求和再除以类别的个数。跟样本的个数没有关系。
在这里插入图片描述
micro-average:
每个样本有相同的权重。
在这里插入图片描述
macro与micro的区别:

  1. 如果各个类别的样本个数相差不的话,macro-average与micro-average相差不大
  2. 如果不同类型样本个数不均衡时,比如有一个类型的样本数据特别多,占到80%以上。如果更注重这个大类的话用micro-averge。如果注重小类别的话用macro-average。
    在这里插入图片描述

使用方法:

from sklearn.metrics import precision_score, recall_score, f1_score
p = precision_score(y_true, y_pred, averge='macro')
r = recall_score(y_true, y_pred, average='micro')
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是用lgb模型进行6分类,并使用StratifiedKFold,评价指标为macro-f1的示例代码: ```python import lightgbm as lgb from sklearn.model_selection import StratifiedKFold from sklearn.metrics import f1_score # 假设数据集的特征矩阵为 X,标签为 y # 定义模型参数 params = { 'boosting_type': 'gbdt', 'objective': 'multiclass', 'num_class': 6, 'metric': 'multi_logloss', 'num_leaves': 31, 'learning_rate': 0.05, 'feature_fraction': 0.9, 'bagging_fraction': 0.8, 'bagging_freq': 5, 'verbose': -1, 'random_state': 2021 } # 定义StratifiedKFold交叉验证 n_splits = 5 skf = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=2021) # 定义输出变量 oof_preds = np.zeros(X.shape[0]) class_preds = np.zeros(X.shape[0]) # 开始交叉验证 for fold, (train_idx, valid_idx) in enumerate(skf.split(X, y)): print("Fold", fold+1) X_train, X_valid = X[train_idx], X[valid_idx] y_train, y_valid = y[train_idx], y[valid_idx] # 定义训练数据 lgb_train = lgb.Dataset(X_train, y_train) lgb_valid = lgb.Dataset(X_valid, y_valid) # 训练模型 model = lgb.train(params, lgb_train, valid_sets=[lgb_valid], num_boost_round=10000, early_stopping_rounds=100, verbose_eval=100) # 对验证集进行预测 valid_preds = model.predict(X_valid, num_iteration=model.best_iteration) oof_preds[valid_idx] = valid_preds.argmax(axis=1) class_preds[valid_idx] = valid_preds.max(axis=1) print("-" * 50) # 输出交叉验证结果 macro_f1 = f1_score(y, oof_preds, average='macro') print("Overall Macro-F1:", macro_f1) ``` 在这个示例中,我们使用了sklearn中的f1_score函数来计算macro-f1。在计算f1_score时,需要将参数average设为'macro'。最终输出结果为整个数据集上的macro-f1。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值