首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python进行高斯过程回归训练数据集的数据增强

用python进行高斯过程回归训练数据集的数据增强
EN

Stack Overflow用户
提问于 2018-02-25 15:54:10
回答 1查看 802关注 0票数 5

我正在努力解决一个高斯过程回归问题与科学知识学习。为了执行预测,我有一个数据集,其中包含传感器在三维坐标中的10个不同位置。

Sensor1和弦:

代码语言:javascript
复制
[[  30.1678 -173.569   725.724 ]
 [  29.9895 -173.34    725.76  ]
 [  29.9411 -173.111   725.768 ]
 [  29.9306 -173.016   725.98  ]
 [  29.6754 -172.621   725.795 ]
 [  29.5277 -172.274   725.903 ]
 [  29.585  -171.978   726.111 ]
 [  29.4114 -171.507   726.188 ]
 [  29.3951 -170.947   726.173 ]
 [  29.3577 -170.196   726.384 ]]

我执行探地雷达与离开一个外技术,所以在每次运行,我使用9个三维和弦。训练我的模型,并在一家公司进行测试。然后我将置换改为继续。

为了防止过度拟合的问题,我想使用数据增强来扩大(或增加噪音)我的训练数据。不幸的是,我看到的大多数数据增强技术都用于图像(随机旋转、裁剪、翻转等)。我的问题是:

  1. 对于python中的数据,有什么方法可以这样做吗?
  2. 是否有任何限制适用于我以上数据的增强。对于一个特定的3D coord,我可以添加多少噪声?
  3. 要添加的新噪声数据,例如列x,应该介于最小(29.585)值和最大(30.1678)值之间。我说的对吗?或者也可以一帆风顺地做?

编辑

所以,我是手动产生噪音的。

代码语言:javascript
复制
def use_data_augmentation(self, data):
   sizeOfData= 1000
        
   # Add noise to column x
   # Find min/max of each individual col
   noiseColXMin = np.min(data[:, 0])
   noiseColXMax = np.max(data[:, 0])

   # Generate random number between min/max
   addNoiseToColX = self.create_random_floats(noiseColXMin, noiseColXMax, sizeOfData)

   # Add noise to column y
   ...
   # Add noise to column z
   ...

   # Convert three 1D arrays to one 3D array
   addInputNoiseTotal = np.array([addNoiseToColX, addNoiseToColY, addNoiseToColZ]).T
   print('addInputNoiseTotal :\n', addInputNoiseTotal,
      '\nSDX:', np.std(addInputNoiseTotal[:, 0]),
      '\nSDY:', np.std(addInputNoiseTotal[:, 1]),
      '\nSDZ:', np.std(addInputNoiseTotal[:, 2]))

def create_random_floats(low, high, size):
   return [random.uniform(low, high) for _ in range(size)]

我现在的问题是:如果我通过random.uniform(low, high, size)在最小/最大值之间生成浮点数,那么噪声数据的标准差有时会大于0.81.0。因此,探地雷达预报的均方根值更差。如何设置限制,使生成的浮点数的SD值不能大于例如0.2

EN

回答 1

Stack Overflow用户

发布于 2021-04-16 08:11:03

考虑到两个独立的随机变量之和的方差是它们的方差之和,您可以计算数据集的方差,并利用统一随机变量的方差等于(high - low)**2 / 12,而标准差是方差的平方根,选择满足条件的highlow值。

代码语言:javascript
复制
np.sqrt(np.var(dataset) + (high - low)**2 / 12) <= 0.2

这应该确保产生的噪声数据的标准差小于或等于您的0.2阈值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48975402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档