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

基于真实数据集动态生成代表性伪造数据集的技术实现需求

动态生成代表性伪造数据集的实现方案

核心实现逻辑

完全基于数据类型自动处理,无需硬编码列名,满足以下要求:

  • Object类型列:从原数据集对应列的现有值中随机重复选取
  • 新增ExtraObjectColumn列:从指定自定义列表中随机选取值
  • 数值类型列:在原列最小值到中位数区间内生成随机数
  • 支持批量处理多个数据集,生成行数默认≥10000,性能高效

代码实现

使用Python的pandas和numpy实现,依赖向量化操作保证性能:

import pandas as pd
import numpy as np

def generate_synthetic_data(original_df, target_rows=10000, extra_object_values=["A", "B", "C"]):
    # 自动分离数值列与Object列
    numeric_cols = original_df.select_dtypes(include=['int64', 'float64']).columns
    object_cols = original_df.select_dtypes(include=['object']).columns
    
    synthetic_data = {}
    
    # 生成原Object列的伪造数据
    for col in object_cols:
        unique_vals = original_df[col].unique()
        synthetic_data[col] = np.random.choice(unique_vals, size=target_rows, replace=True)
    
    # 生成数值列的伪造数据(min到中位数区间)
    for col in numeric_cols:
        col_min = original_df[col].min()
        col_median = original_df[col].median()
        
        if original_df[col].dtype == 'int64':
            # 整数列生成整数随机数
            synthetic_data[col] = np.random.randint(low=col_min, high=col_median + 1, size=target_rows)
        else:
            # 浮点列生成浮点随机数
            synthetic_data[col] = np.random.uniform(low=col_min, high=col_median, size=target_rows)
    
    # 添加自定义额外列
    synthetic_data['ExtraObjectColumn'] = np.random.choice(extra_object_values, size=target_rows, replace=True)
    
    return pd.DataFrame(synthetic_data)

# 测试示例
if __name__ == "__main__":
    # 模拟原数据集
    test_df = pd.DataFrame({
        'ProductType': ['Electronics', 'Clothing', 'Home', 'Electronics'],
        'Region': ['North', 'South', 'East', 'West'],
        'Sales': [100, 200, 150, 300],
        'Price': [99.99, 49.99, 29.99, 199.99]
    })
    
    # 生成15000行伪造数据
    fake_data = generate_synthetic_data(test_df, target_rows=15000, extra_object_values=["Tier1", "Tier2", "Tier3"])
    print(fake_data.head())
    print(f"生成数据集行数:{len(fake_data)}")

关键细节说明

  • 自动列识别:通过select_dtypes自动区分数值型(int/float)和Object型列,无需手动指定列名
  • 性能优化:全程使用numpy向量化操作生成数据,避免循环,即使生成10万行以上数据也能快速完成
  • 数据一致性:Object列保留原数据集的所有可选值(包括NaN),数值列严格控制在要求的区间内,保证伪造数据的代表性
  • 灵活配置:仅需指定extra_object_values自定义列表,其他参数可根据需求调整(如目标行数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:46:32