我已生成数据并需要根据特定分布选择样本。
我的数据是图像和转向角,每个图像都有一个角度。我在直方图中将数据绘制在所有转向角上,这些值是[-1,1]之间的值。对于我的应用,重要的是每个转向角的表示频率很重要,这就是为什么我希望能够通过随机选择和丢弃角度和相应的图像将其“塑造”成常见的分布。在这种情况下,我想根据高斯N(0,0.3)分布对其进行采样。
到目前为止,我提出的只是使用此代码裁剪顶部(我认为我首先需要统一分布):
hist_y_data = np.histogram(y_data, bins=200)
number_samples_bin = hist_y_data[0]
range_samples_bin = hist_y_data[1]
# To introduce randomness, let's shuffle the data
X, y = shuffle(X_data_paths, y_data)
length_y = len(y)
i = 0
for counter in range(length_y):
for j in range(len(number_samples_bin)-1):
if y[i] >= range_samples_bin[j] and y[i] < range_samples_bin[j+1]:
if number_samples_bin[j] >= 200:
# os.remove('data/' + X_data_paths[i])
y.pop(i)
X.pop(i)
number_samples_bin[j] -= 1
i -= 1
break
i += 1
我真正需要的是根据具有N(0,0.3)的高斯分布来修剪数据。我该怎么做?