如何规范化复值数据?

数据挖掘 机器学习 深度学习 scikit-学习
2022-02-19 16:42:08

我正在获取所有元素的绝对值,计算平均值,然后从原始值中减去它。我只是觉得这是不正确的,可以改变向量。我也在除以标准偏差,但我对此非常有信心,因为我知道这是对复杂值的纯粹重新调整。

关于如何做到这一点的任何指导方针?

在此处输入图像描述

PS:我的担忧源于将每个复值元素视为 2D 平面中的向量,而这种减法可能会改变它指向的位置。

1个回答

首先,从几何角度思考什么是复数以及算术运算可以实现什么总是有帮助的。


在您的函数中,您使用的是这些复数绝对值的平均值和标准差。这意味着如果您对数据的绝对值执行操作:

(tmp - tmp.mean()) / tmp.std()

您最终将得到均值为 0 和标准差为 1 的归一化数据。

回到几何思维,当您执行原始操作时:

(x_source - tmp.mean()) / tmp.std()

您实际上是将数据的平均tmp.mean()单位向左移动,然后水平缩放1/tmp.std().

请注意,这些都不是垂直移动或缩放,所以有些东西闻起来很有趣。


我会做什么:我会独立地标准化每个坐标。

找到平均值很好 - 复杂数据点的平均值与组件的平均值相同:

z¯=(x¯,y¯)
所以你可以减去平均值x每个输入值的值x-协调。同上y.

然后将实部除以实部的标准差,虚部也是如此。

除以(新)规范的标准偏差也可能是合适的。这将确保涉及您的数据的良好属性位于某个半径的圆内。


代码:

real_data = real(x_source)
imag_data = imaginary(x_source)

real_data = ( real_data - real_data.mean() ) / real_data.std()
imag_data = ( imag_data - imag_data.mean() ) / imag_data.std()

x_source_norm = real_data + i * imag_data