尝试解决如何以可重复的方式使用python或javascript生成合成数据集

尝试解决如何以可重复的方式使用python或javascript生成合成数据集,python,node.js,statistics,data-science,Python,Node.js,Statistics,Data Science,我有相当的技术背景,并且做过相当多的节点开发,但在统计方面我是一个新手,在python方面我是一个完全的新手,所以任何关于我正在尝试的合成数据生成实验的建议都是非常受欢迎的:) 我给自己设置了一个问题,为一家实体店(我知道是老派)生成一些现实的(ish)销售数据 我从互联网上获得了一个小型的真实事务数据集(约500k行),我计划使用某种工具进行分析,以向PRNG提供输入 如果我能从几个广泛的问题领域来解释我的想法,希望有人能帮助我: 问题1 我认为我应该能够使用我所拥有的真实数据: a) 生成概

我有相当的技术背景,并且做过相当多的节点开发,但在统计方面我是一个新手,在python方面我是一个完全的新手,所以任何关于我正在尝试的合成数据生成实验的建议都是非常受欢迎的:)

我给自己设置了一个问题,为一家实体店(我知道是老派)生成一些现实的(ish)销售数据

我从互联网上获得了一个小型的真实事务数据集(约500k行),我计划使用某种工具进行分析,以向PRNG提供输入

如果我能从几个广泛的问题领域来解释我的想法,希望有人能帮助我:

问题1 我认为我应该能够使用我所拥有的真实数据:

a) 生成概率分布曲线或 b) 确定与实际数据最匹配的“开箱即用”分布

我假设Python或Node中有一个工具或库,如果提供数据,它将执行其中一项或两项操作,并且,进一步,给我正确的值以插入PRNG,从而生成一系列数据点,这些数据点不仅像原始数据点一样分布,而且在相同的范围内

我怀疑b)在计算上会更便宜,而且工具会更好地支持它——我对绝对“真实性”的需求并没有那么高——这只是一个实验:)

这让我想到

问题1:我可以使用什么工具进行分析并生成数据点?正如我所说,我的数学还可以,但我的统计数据不太好(而且我看到的工具文档有点密集,至少对我来说有点难以理解),因此也欢迎提供一些关于使用该工具的指导:)

然后是我的下一个,我认为更基本的问题,我甚至不知道如何解决

问题2 虽然我认为上面的方法可以很好地为每一行生成时间戳,但我将围绕如何建模事务的实际用途进行讨论

我希望每个交易都与产品列表中的特定产品相关

现在,产品不需要是“真实的”(我想我可以用Faker之类的东西为品牌、产品名称等生成随机词),但理想情况下,所购买产品的分布应该是有点真实的(如果是一个词的话)

我的第一个想法是对价格进行与时间戳相同的分析,然后为生成的每个价格“组合”一个产品,但我放弃了这一想法,原因有两个:它可能在生成的数据集中是一致的,但不是跨数据集的。我想在较大的场景中,会加倍计算

因此,我的下一个想法是,我将创建某种查找表,其中包含一组预定义的产品,这些产品将在新一代工作中持续存在,但我在这两个方面遇到了困难:

  • 我需要自己生成列表。我可以想象,我可以将原始数据集过滤为唯一的产品(它有库存代码),然后使用该列表中的单位成本分布来做与时间戳相同的事情(即,生成一组单位成本分布与原始数据相似的产品,然后伪造其余数据)
  • 问题2:这是明智的做法吗?我能做些更聪明的事吗

  • 在生成事务时,我还需要一些方法来确定要选择什么产品。我想也许我可以生成某种带扣的柱状图,计算出在一定成本范围内(比如0-1美元、1-2美元等)的购买频率。然后,我可以使用该频率来定义给定交易的成本在这些范围内的概率,然后随机选择成本在该范围内的产品
  • 问题3:同样,这是明智的做法吗?有没有一种方法可以让我用一个相当容易理解的工具(或者至少有一个简单的英文文档:)进行查找

    我知道这是一个相当高的水平,但是任何人能给我的任何帮助都会非常感激,因为我已经用这个碰壁了

    提前感谢:)

    综合数据集只包含时间戳、产品id和项目成本列

    源数据集如下所示:

    InvoiceNo,StockCode,Description,Quantity,InvoiceDate,UnitPrice,CustomerID,Country
    536365,85123A,WHITE HANGING HEART T-LIGHT HOLDER,6,12/1/2010 8:26,2.55,17850,United Kingdom
    536365,71053,WHITE METAL LANTERN,6,12/1/2010 8:26,3.39,17850,United Kingdom
    536365,84406B,CREAM CUPID HEARTS COAT HANGER,8,12/1/2010 8:26,2.75,17850,United Kingdom
    536365,84029G,KNITTED UNION FLAG HOT WATER BOTTLE,6,12/1/2010 8:26,3.39,17850,United Kingdom
    536365,84029E,RED WOOLLY HOTTIE WHITE HEART.,6,12/1/2010 8:26,3.39,17850,United Kingdom
    536365,22752,SET 7 BABUSHKA NESTING BOXES,2,12/1/2010 8:26,7.65,17850,United Kingdom
    536365,21730,GLASS STAR FROSTED T-LIGHT HOLDER,6,12/1/2010 8:26,4.25,17850,United Kingdom
    536366,22633,HAND WARMER UNION JACK,6,12/1/2010 8:28,1.85,17850,United Kingdom
    

    欢迎来到堆栈溢出。如果显示几行事务数据集,您的问题可能会更容易理解。还有一个问题:您是否考虑过随机扰动该数据集中的值,而不是生成具有类似描述性统计数据的完全合成数据集?这可能是到达目的地的更快的方法。感谢您的回复!我用数据集的更多信息编辑了这个问题。。。关于缠绵,我没有考虑过,没有。事实上,我从来没有听说过它-我认为你的建议是,有效地,在现有的价值中添加噪音,以产生非常相似的东西(并且足够接近我的目的),对吗,但是有点不同,所以我可以用稍微不同的输出反复地做?是的,我的建议是从现有样本数据集中的值中添加或减去小的随机值。顺便说一句,我们非常喜欢以文本形式而不是图像形式显示样本数据。将它缩进四个空格,它将完全按照您的格式显示。我想我明白了为什么插入的图像是垃圾。查看附件并不容易。我想把它作为一个代码片段就可以了?我在编辑器中看不到表格数据选项…最后,我使用原始数据集中的带扣时间和价格分布(直方图)生成交易。对于价格,我使用桶随机选择一个公关