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

如何为DataFrame不同来源的行分配权重以用于模型训练?

多来源数据集权重分配实现方案

步骤1:为不同来源数据标注专属权重

你可以先给每个来源的数据集新增权重字段,再合并成总数据集,可根据标注质量自定义权重值,质量越高权重越大,示例代码如下:

import pandas as pd

# source 1
df1 = pd.DataFrame({
      'feature': ['a', 'b', 'c'],
      'label': [1, 0, 0]
      })
df1['sample_weight'] = 1.5 # 示例给source1分配1.5的权重

# source 2
df2 = pd.DataFrame({
      'feature': ['d', 'e', 'f'],
      'label': [1, 0, 1]
      })
df2['sample_weight'] = 0.8 # 示例给source2分配0.8的权重

df = pd.concat([df1, df2], ignore_index=True)

步骤2:训练时传入权重参数

你提到的权重不属于类别权重,属于样本训练权重,主流模型框架都支持直接传入该参数:

scikit-learn 系列模型

绝大多数sklearn的模型fit方法都支持sample_weight参数,直接传入权重列即可:

from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier()
X = df[['feature']] # 实际使用时可对特征做编码处理
y = df['label']
weight = df['sample_weight']
clf.fit(X, y, sample_weight=weight)

其他模型适配

  • XGBoost、LightGBM等树模型的sklearn接口同样支持sample_weight参数,使用方法和上面一致
  • 如果你用的是深度学习框架(TensorFlow/PyTorch),可以在计算损失函数时,将每个样本的损失乘以对应权重再求平均,即可实现来源权重的差异化

补充:如果需要差异化特征本身的重要性

如果你需要让模型感知特征的来源差异,还可以新增source特征列作为输入的一部分,模型会自动学习不同来源特征的重要性系数,和样本权重搭配使用效果更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:57:03