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

Python表格数据结构修改:多标签分组展开建模及结果回聚方法

多标签多项式分类数据格式转换实现方案

以下基于Python pandas库实现全流程转换,适配你提到的三个阶段需求:

阶段1:原始多标签字段解析

首先将Groups字段的字符串格式标签转换为列表格式,方便后续拆分:

import pandas as pd

# 示例原始数据,可替换为你读取的实际表格数据
df_raw = pd.DataFrame({
    "id": [1, 2],
    "feature_1": [0.3, 0.9],
    "feature_2": [15, 27],
    "Groups": ['"A","C","D"', '"B","C"']
})

# 去除引号后按逗号拆分,得到标签列表
df_raw["group_list"] = df_raw["Groups"].str.replace('"', "").str.split(",")

阶段2:拆分标签得到训练用长表

将每个标签拆分为单独行,其余字段保持原值,直接可用于模型训练:

df_train = df_raw.explode("group_list", ignore_index=True)
# 重命名为模型训练用的标签列
df_train = df_train.rename(columns={"group_list": "label"})

输出的df_train每行对应一个ID+单个标签,特征、ID字段和原始行完全一致。

阶段3:预测结果聚合回ID粒度

模型输出每个标签的预测概率后,按原始Groups的标签顺序拼接为字符串,回到一行对应一个ID的格式:

# 示例预测结果,替换为你的模型实际输出
df_pred = pd.DataFrame({
    "id": [1,1,1,2,2],
    "label": ["A","C","D","B","C"],
    "pred_prob": [0.94, 0.77, 0.62, 0.89, 0.83]
})

# 先标记原始标签的顺序,避免聚合后顺序错乱
df_order = df_raw[["id", "group_list"]].explode("group_list").rename(columns={"group_list": "label"})
df_order["rank"] = df_order.groupby("id").cumcount()

# 关联预测结果并按原始顺序排序
df_pred_ordered = df_pred.merge(df_order, on=["id", "label"]).sort_values(["id", "rank"])

# 按ID聚合拼接概率字符串
df_result = df_pred_ordered.groupby("id", as_index=False)["pred_prob"].agg(
    pred_prob_str=lambda x: ",".join(x.round(2).astype(str))
)

# 关联回原始字段得到最终结果
df_final = df_result.merge(df_raw.drop(columns=["group_list"]), on="id", how="left")

如果你的模型直接输出全类别概率矩阵,可以在预测阶段直接按原始group_list的顺序提取对应概率后拼接,省略上述关联排序步骤,性能更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:36:05