为了简单起见,我有一个包含人体姿势坐标的数据集,假设这是样本数据
-----------------------------------
| f1 | f2 | f3 | f4 |
-----------------------------------
| [1 2] | [2 3 ] | [1 2] | [2 3 ] |
| [1 2] | [2 3 ] | [1 2] | [2 3 ] |
| [1 2] | [2 3 ] | [1 2] | [2 3 ] |
为了生成序列,处理这些笛卡尔坐标的最佳方法是什么,这样我就可以得到作为笛卡尔坐标的最终输出
我尝试过的方法-
L2规范化
我对数据进行L2归一化,并将其转换为矢量[f1(x) f1(y) f2(x) ...]
通过RNN输入后,我得到了输出,但无法撤消归一化,因此我无法获得笛卡尔坐标
功能工程
我执行特征工程,对于一个集合(x,y(,得到r和θ,其中r是x和y的平方根,θ=arctan(y/x(。同样,在执行序列生成后,我无法获得笛卡尔坐标
特征工程是正确的方法,我只是没有意识到我可以将其转换回笛卡尔坐标。
对于其他人来说,这就是您可以转换值的方法笛卡尔->极坐标->笛卡尔
设坐标为:
['311.67422784', '966.54288455']
我们首先定义我们的转换函数
import numpy as np
def transformPolar(coord):
x = coord[0]
y = coord[1]
r = (float(x)**2 + float(y)**2)**0.5
theta = np.arctan(float(y)/float(x))
return r, theta
def transformCartesian(r,theta):
x = r*np.cos(theta)
y = r*np.sin(theta)
return x,y
r, t = transformPolar(e)
print(r, t)
x, y = transformCartesian(r, t)
print(x, y)
1015.5520528135892 1.2588608505806973
311.67422784 966.54288455