Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在scikit learn中是否可以使用复数作为目标标签?_Python_Numpy_Scipy_Scikit Learn - Fatal编程技术网

Python 在scikit learn中是否可以使用复数作为目标标签?

Python 在scikit learn中是否可以使用复数作为目标标签?,python,numpy,scipy,scikit-learn,Python,Numpy,Scipy,Scikit Learn,我试图用sklearn来预测一个代表旋转的变量。由于在极端旋转时从-pi到pi的不幸跳跃,我认为更好的方法是使用复数作为目标。这样,从1+0.01j到1-0.01j的误差就没有那么严重了 我找不到任何文档描述sklearn是否支持复数作为分类器的目标。从理论上讲,距离度量应该可以很好地工作,因此它至少应该适用于某些回归算法 有谁能建议我如何得到一个以复数为目标的回归算法吗?好问题。如何将角度转换为一对标签,即。x和y坐标。这些是角度(cos和sin)的连续函数。您可以将单独的x和y分类器的结果合

我试图用sklearn来预测一个代表旋转的变量。由于在极端旋转时从-pi到pi的不幸跳跃,我认为更好的方法是使用复数作为目标。这样,从1+0.01j到1-0.01j的误差就没有那么严重了

我找不到任何文档描述sklearn是否支持复数作为分类器的目标。从理论上讲,距离度量应该可以很好地工作,因此它至少应该适用于某些回归算法


有谁能建议我如何得到一个以复数为目标的回归算法吗?

好问题。如何将角度转换为一对标签,即。x和y坐标。这些是角度(cos和sin)的连续函数。您可以将单独的x和y分类器的结果合并为一个角度$\θ=\sign(x)\arctan(y/x)$。但是,如果两个分类器都返回接近零的数字,则结果将不稳定。

多个回归器支持多维回归目标。只需将复数视为二维点。

到目前为止,我发现大多数分类器,如线性回归器,会自动将复数转换为真实部分

然而,kNN和RADIUSN回归器工作得很好——因为它们对相邻标签进行加权平均,所以可以优雅地处理复数

使用多目标分类器是另一种选择,但是我不想解耦x和y方向,因为这可能会导致不稳定的解决方案,正如Panic上校所提到的,当两个结果接近0时


我将尝试其他具有复杂目标的分类器,并在此处更新结果。

为了让andy的答案更清楚,我所知道的任何sklearn回归器都不会接受目标变量(或输入变量)中的复数。假定32位或64位浮动。不过,复变量实部和虚部的显式2D浮点编码应该可以工作。仅供参考,numpy有一个名为“arctan2”的简便函数,它将返回θ,并在给定x和y偏移量的情况下返回正确的象限。事实上,正如Panic上校所提到的,使用复杂目标的范数和相位,用2D浮点编码代替实部和虚部,可能对您的问题更有意义。