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

基于联合概率分布用Python随机生成新数据集的方法

基于联合概率表随机生成新数据集的Python实现

首先,你的示例原始数据集可通过以下代码加载为DataFrame:

import pandas as pd

data = {'state': {7192: 'healthy', 7193: 'healthy', 7194: 'healthy', 7195: 'healthy', 7196: 'Non healthy', 7197: 'Non healthy', 7198: 'Non healthy'},
        'type':  {7192: 'W', 7193: 'A', 7194: 'W', 7195: 'W', 7196: 'Y', 7197: 'N', 7198: 'Y'}, 
        'tier': {7192: '1', 7193: '1', 7194: '1', 7195: '1', 7196: '3', 7197: '1', 7198: '1'}, 
        'color': {7192: 'red', 7193: 'blue', 7194: 'red', 7195: 'red', 7196: 'yellow', 7197: 'yellow', 7198: 'yellow'}
       }
df = pd.DataFrame(data)

下面提供两种实用方法生成符合联合分布的新数据集,均允许一定随机性:

方法一:直接基于原始DataFrame有放回抽样

无需提前计算联合概率表,直接对原始数据的行进行随机有放回采样,结果自然贴合原始数据的联合分布,自带随机性。

代码示例:

# 生成100条新数据,replace=True表示有放回抽样
new_data = df.sample(n=100, replace=True, random_state=42).reset_index(drop=True)
  • n:指定生成的新数据行数
  • replace=True:开启有放回抽样,允许重复抽取同一行,模拟随机分布
  • random_state:可选参数,设置随机种子保证结果可复现

方法二:基于已计算的联合概率表抽样

若你已得到包含各特征组合及其对应概率的联合概率表(结构示例:[state, type, tier, color, prob]的DataFrame),可通过概率权重抽样生成新数据:

假设联合概率表为joint_prob_df,代码示例:

import numpy as np

# 提取所有特征组合的列表
combinations = joint_prob_df[['state', 'type', 'tier', 'color']].values.tolist()
# 提取对应的概率权重
probs = joint_prob_df['prob'].values

# 生成100条新数据:按概率随机选择组合
selected_indices = np.random.choice(len(combinations), size=100, p=probs)
new_data = pd.DataFrame([combinations[i] for i in selected_indices], columns=['state', 'type', 'tier', 'color'])

这种方法灵活性更高,你可手动调整概率表中的数值,生成符合自定义分布的数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:35:23