You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中基于二进制列分割数组及组合模型评估咨询

问题解答

一、Python中按联合预测列分割ndarray子集

假设你的ndarray名为data,列索引与含义对应关系为:

  • 第0列:y(实际值)
  • 第1列:0_0(XGB和SVM均预测0)
  • 第2列:1_0(XGB预测1、SVM预测0)
  • 第3列:0_1(XGB预测0、SVM预测1)
  • 第4列:1_1(XGB和SVM均预测1)

由于每行仅2-5列中某一列值为1,直接通过布尔索引即可生成4个子集:

import numpy as np

# 生成四个子集
subset_00 = data[data[:, 1] == 1]  # 两模型均预测0的样本
subset_10 = data[data[:, 2] == 1]  # XGB预测1、SVM预测0的样本
subset_01 = data[data[:, 3] == 1]  # XGB预测0、SVM预测1的样本
subset_11 = data[data[:, 4] == 1]  # 两模型均预测1的样本

如果习惯用列名操作,可先将ndarray转为Pandas DataFrame,筛选更直观:

import pandas as pd

df = pd.DataFrame(data, columns=['y', '0_0', '1_0', '0_1', '1_1'])
subset_00 = df[df['0_0'] == 1]
subset_10 = df[df['1_0'] == 1]
subset_01 = df[df['0_1'] == 1]
subset_11 = df[df['1_1'] == 1]

二、组合模型的评估指标

针对双模型联合预测的场景,除单独计算XGB、SVM的精确率/召回率外,可采用以下针对性评估方式:

1. 联合类别的多分类评估

将四个联合预测结果(0_0、1_0、0_1、1_1)视为四个类别,结合真实标签y构建多分类混淆矩阵,计算:

  • 每个联合类别的精确率:该类别中真实标签符合预期的比例(如0_0类别中y=0的占比)
  • 每个联合类别的召回率:真实标签为某值的样本中,被分到该联合类别的比例(如真实y=0的样本中,被分到0_0的占比)
  • 每个联合类别的F1值:精确率与召回率的调和平均

2. 模型一致性与分歧分析

  • 一致场景准确率:计算0_0和1_1子集中,预测与真实值匹配的比例(如(0_0中y=0的样本数 + 1_1中y=1的样本数) / 总一致样本数)
  • 分歧场景准确率:对比分歧时两个模型的预测准确性(如1_0子集中y=1的占比,代表XGB在分歧时的准确率;0_1子集中y=1的占比,代表SVM在分歧时的准确率)
  • Cohen's Kappa系数:衡量XGB与SVM预测结果的一致性,取值范围为[-1,1],越接近1说明模型一致性越高

3. 组合策略的整体评估

若你基于这四个场景设计了组合决策规则(如一致时直接采纳预测,分歧时用加权投票或规则判断),可针对该组合策略计算整体的精确率、召回率、F1值,与单独模型的表现做对比。

内容的提问来源于stack exchange,提问作者threadofmotion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 06:15:06