标签: sampling

在MATLAB中重新采样两个不同长度的数据集

我有两个向量:长度为927的sensorA和长度为1250的sensorB.我想让它们具有相同的长度.MATLAB中的resample()函数在边缘处非常嘈杂,我需要至少相当好的精度.

我知道重新采样可以通过插值完成,但我如何以最有效的方式实现它.我需要尽可能均匀地拉伸927到1250.

我想知道我是否可以这样做:

  1. 我在短矢量中需要333个新样本.因此,对于每3个值,我插入两个连续值的平均值(中点).=>插入309个样本
  2. 对于剩余的我每38个样本再次插入(927 /(333-309))

这有意义吗?我仍然无法得到精确的插值.我还可以使用其他功能吗?(除了interp()因为它需要整体重采样率?)

matlab signal-processing sampling resampling

7
推荐指数
1
解决办法
2万
查看次数

与负载平衡/重新分配相关的算法名称

给定一个数组[x1,x2,x3,...,xk],其中xi是方框i中的项目数,如何重新分配项目,以便任何方框都不包含多于N个项目.N接近sum(xi)/ k - 也就是说,N接近具有相同项目数的每个框.不应使用中间框来携带物品 - 如果x1有盈余且x2和x3有缺陷,x1应该将一些物品发送到x2和x3,但不要将所有物品发送到x2然后让x2解决盈余.

实际问题是:每个计算节点都有一组样本,并且在重新采样步骤之后,一些计算机节点可能有盈余而其他计算机节点有缺陷,所以我想重新分配样本,同时最小化通信.

我想这种问题有一个名字.

algorithm distributed-computing sampling

7
推荐指数
1
解决办法
472
查看次数

随机抽样数组的唯一子集

如果我有一个数组:

a = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

如何随机选择数组的子集,以使每个子集的元素都是唯一的?也就是说,对于a可能的子集将是:

[]
[1]
[2]
[3]
[1,2]
[2,3]
[1,2,3]
Run Code Online (Sandbox Code Playgroud)

我无法生成所有可能的子集,因为a的实际大小非常大,因此有许多子集.目前,我正在使用"随机游走"的想法 - 对于a的每个元素,我'翻转一个硬币'并包括它,如果硬币出现在头上 - 但我不确定这是否实际上均匀地对空间进行采样.这感觉就像它向中间施力,但是这可能只是我的脑海做模式匹配,因为会有更多的中型possiblities.

我使用正确的方法,或者我应该如何随机抽样?

(我知道这更像是一种语言不可知和'数学'的问题,但我觉得它不是Mathoverflow的真正材料 - 我只需要一个实际的答案.)

ruby random sampling

7
推荐指数
2
解决办法
2152
查看次数

Tensorflow数据集API中的过采样功能

我想问一下,当前的数据集API是否允许实现过采样算法?我处理高度不平衡的阶级问题.我当时认为在数据集解析过程中对特定类进行过度采样会很好,即在线生成.我已经看到了rejection_resample函数的实现,但是这会删除样本而不是复制它们,并且它减慢了批处理生成(当目标分布与初始分布大不相同时).我想要实现的是:举一个例子,看看它的类概率决定是否复制它.然后调用dataset.shuffle(...) dataset.batch(...)并获取迭代器.最好的(在我看来)方法是对低概率类进行过采样,并对最可能的类进行子采样.我想在网上做,因为它更灵活.

python sampling tensorflow tensorflow-datasets

7
推荐指数
1
解决办法
1571
查看次数

模拟后得到的两个向量的比较

我想申请的甩采样方法来模拟随机矢量Y=(Y_1, Y_2)从一个单元盘状的均匀分布的D = { (X_1 , X_2) \in R^2: \sqrt{x^2_1 + x^2_2} ? 1},使得X = (X_1 , X_ 2)处于正方形的均匀分布的随机矢量S = [?1, 1]^2和接头密度f(y_1,y_2) = \frac{1}{\pi} 1_{D(y_1,y_2)}.

在拒绝方法中,我们一般接受一个样本如果f(x) \leq C * g(x)。我正在使用以下代码:

x=runif(100,-1,1)
y=runif(100,-1,1)

d=data.frame(x=x,y=y)
disc_sample=d[(d$x^2+d$y^2)<1,]
plot(disc_sample)
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

{使用上面的代码,从逻辑上讲,的大小d应该大于的大小,disc_sample但是当我调用它们时,我看到它们中的每一个都有 100 个元素。这怎么可能。为什么尺寸相同。}这部分已解决,感谢下面的评论。

现在的问题

另外,我怎样才能重新编写我的代码,以便为我提供按照条件获取 100 个样本所需的样本总数。即给我拒绝的样品数量,直到我得到 100 个所需的样品?

感谢r2evans的回答,但我希望写一些更简单的东西,一个 while 循环将所有可能的样本存储在矩阵或数据帧而不是列表中,然后从该数据帧调用,只是样本遵循条件。我在没有使用列表和 sapply 函数的情况下修改了答案中的代码,但它没有给出所需的结果,它只产生一行。

i=0
samps <- data.frame()
goods <- data.frame()
nr <- 0L
sampsize …
Run Code Online (Sandbox Code Playgroud)

simulation r probability sampling

7
推荐指数
1
解决办法
93
查看次数

模拟联合累积分布函数的样本?

我有两个自变量 X 和 Y 的联合密度函数。现在我想从这个分布中采样新的 x,y。

我相信我必须做的是找到联合累积分布,然后以某种方式从中采样。我有点知道如何在一维中做到这一点,但我发现很难理解如何在二维中做到这一点。

我还使用matlab函数cumtrapz求出上述pdf的累积分布函数。

需要明确的是,我想要做的是从这个经验分布中抽取随机值 x,y。

有人可以在这里指出正确的方向吗?

编辑:我有数据值,我使用 [pdf bins] = hist3([NY])

然后我将 pdf 标准化并执行

累积分布 = cumtrapz(pdfNormalize)

是的(对于下面的评论)X,Y 应该是独立的。

random matlab distribution probability sampling

6
推荐指数
1
解决办法
3579
查看次数

音频采样频率依赖于频道?

如果您的音频编码为44100Hz,则表示您每秒有44100个样本.对于某个频道或所有频道,这是否意味着44100个采样/秒?

例如,如果一首歌曲是立体声并且以44100Hz编码,那么两个声道都有44100个样本/秒(也就是每个声道22050个样本),或者每个声道有44100个样本(又名:每秒有88200个样本,44100个用于通道1)通道2的44100和44100.

audio frequency sampling channels

6
推荐指数
2
解决办法
2383
查看次数

高斯后验过程 (Python)

我使用下面的代码创建并采样了平均值 = 0 的联合高斯先验:

\n\n
import numpy as np\nimport matplotlib.pyplot as plt \nfrom math import pi \nfrom scipy.spatial.distance import cdist\nimport scipy.stats as sts\n\nx_prior = np.linspace(-10,10,101)\nx_prior = x_prior.reshape(-1,1)\nmu = np.zeros(x_prior.shape)\n\n#defining the Kernel for the covariance function\n\ndef sec(a,b, length_scale , sigma) : \n    K = sigma * np.exp(-1/(2*length_scale) * cdist(a,b)**2)\n    return K \n\n#defining the Gaussian Process prior\n\ndef GP(a , b, mu , kernel , length_scale, sigma , samples ) :\n    f = np.random.multivariate_normal(mu.flatten(), kernel(a ,b , length_scale , sigma ) , samples)\n …
Run Code Online (Sandbox Code Playgroud)

python process machine-learning gaussian sampling

6
推荐指数
1
解决办法
1834
查看次数

使用 pyspark 进行权重采样

我使用 PySpark 在 Spark 上有一个不平衡的数据帧。我想重新采样以使其平衡。我只在 PySpark 中找到示例函数

sample(withReplacement, fraction, seed=None)
Run Code Online (Sandbox Code Playgroud)

但我想在Python中对单位体积权重的数据帧进行采样,我可以这样做

df.sample(n,Flase,weights=log(unitvolume))
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用 PySpark 做同样的事情吗?

python sampling apache-spark pyspark

6
推荐指数
1
解决办法
6377
查看次数

如何以不同的速率从 Pandas 数据框中对每个组进行采样

我有一个数据框,其中包含有关我希望从中生成样本的总体信息。我还有一个数据框sample_info,它详细说明了population我的示例中需要的数据框中每个组的数量。我已经开发了一些代码来实现我的需要,但鉴于我正在使用的大型数据集,它的运行速度比我想要的要慢。

有没有办法对总体框架进行分组并将抽样应用于组,而不是像我在下面所做的那样循环遍历它们?

import pandas as pd

population = pd.DataFrame([[1,True],[1,False],[1,False],[2,True],[2,True],[2,False],[2, True]], columns = ['Group ID','Response'])

    Group ID    Response
0   1           True
1   1           False
2   1           False
3   2           True
4   2           True
5   2           False
6   2           True

sample_info = pd.DataFrame([[1,5],[2,6]], columns = ['Group ID','Sample Size'])

output = pd.DataFrame(columns = ['Group ID','Response'])

    Group ID    Sample Size
0   1           5
1   2           6


for index, row in sample_info.iterrows():    
        output = output.append(population.loc[population['Group ID'] == row['Group ID']].sample(n=row['Sample Size'], replace …
Run Code Online (Sandbox Code Playgroud)

python sampling pandas

6
推荐指数
1
解决办法
1165
查看次数