我有两个向量:长度为927的sensorA和长度为1250的sensorB.我想让它们具有相同的长度.MATLAB中的resample()函数在边缘处非常嘈杂,我需要至少相当好的精度.
我知道重新采样可以通过插值完成,但我如何以最有效的方式实现它.我需要尽可能均匀地拉伸927到1250.
我想知道我是否可以这样做:
这有意义吗?我仍然无法得到精确的插值.我还可以使用其他功能吗?(除了interp()因为它需要整体重采样率?)
给定一个数组[x1,x2,x3,...,xk],其中xi是方框i中的项目数,如何重新分配项目,以便任何方框都不包含多于N个项目.N接近sum(xi)/ k - 也就是说,N接近具有相同项目数的每个框.不应使用中间框来携带物品 - 如果x1有盈余且x2和x3有缺陷,x1应该将一些物品发送到x2和x3,但不要将所有物品发送到x2然后让x2解决盈余.
实际问题是:每个计算节点都有一组样本,并且在重新采样步骤之后,一些计算机节点可能有盈余而其他计算机节点有缺陷,所以我想重新分配样本,同时最小化通信.
我想这种问题有一个名字.
如果我有一个数组:
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的真正材料 - 我只需要一个实际的答案.)
我想问一下,当前的数据集API是否允许实现过采样算法?我处理高度不平衡的阶级问题.我当时认为在数据集解析过程中对特定类进行过度采样会很好,即在线生成.我已经看到了rejection_resample函数的实现,但是这会删除样本而不是复制它们,并且它减慢了批处理生成(当目标分布与初始分布大不相同时).我想要实现的是:举一个例子,看看它的类概率决定是否复制它.然后调用dataset.shuffle(...) dataset.batch(...)并获取迭代器.最好的(在我看来)方法是对低概率类进行过采样,并对最可能的类进行子采样.我想在网上做,因为它更灵活.
我想申请的甩采样方法来模拟随机矢量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) 我有两个自变量 X 和 Y 的联合密度函数。现在我想从这个分布中采样新的 x,y。
我相信我必须做的是找到联合累积分布,然后以某种方式从中采样。我有点知道如何在一维中做到这一点,但我发现很难理解如何在二维中做到这一点。
我还使用matlab函数cumtrapz求出上述pdf的累积分布函数。
需要明确的是,我想要做的是从这个经验分布中抽取随机值 x,y。
有人可以在这里指出正确的方向吗?
编辑:我有数据值,我使用 [pdf bins] = hist3([NY])
然后我将 pdf 标准化并执行
累积分布 = cumtrapz(pdfNormalize)
是的(对于下面的评论)X,Y 应该是独立的。
如果您的音频编码为44100Hz,则表示您每秒有44100个样本.对于某个频道或所有频道,这是否意味着44100个采样/秒?
例如,如果一首歌曲是立体声并且以44100Hz编码,那么两个声道都有44100个样本/秒(也就是每个声道22050个样本),或者每个声道有44100个样本(又名:每秒有88200个样本,44100个用于通道1)通道2的44100和44100.
我使用下面的代码创建并采样了平均值 = 0 的联合高斯先验:
\n\nimport 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) 我使用 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 做同样的事情吗?
我有一个数据框,其中包含有关我希望从中生成样本的总体信息。我还有一个数据框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) sampling ×10
python ×4
matlab ×2
probability ×2
random ×2
algorithm ×1
apache-spark ×1
audio ×1
channels ×1
distribution ×1
frequency ×1
gaussian ×1
pandas ×1
process ×1
pyspark ×1
r ×1
resampling ×1
ruby ×1
simulation ×1
tensorflow ×1