Octave isnan:未定义错误,使用oct2py

2024-04-27 03:35:25 发布

您现在位置:Python中文网/ 问答频道 /正文

使用oct2py对多个(10MM+)大小的数据帧调用corrcoef.m,返回[R,p]矩阵,为ML算法生成训练集。昨天,我工作没问题。今天早上从头开始运行脚本,返回一个相同的测试集通过oct2py传递给Octave。你知道吗

我被送回:

Oct2PyError: Octave evaluation error:
error: isnan: not defined for cell
error: called from:
corrcoef at line 152, column 5
CorrCoefScript at line 1, column 7

首先,集合中没有null/nan值。事实上,甚至没有零。任何列都不存在一致性,因此在corrcoef计算中不会返回标准偏差。这在数学上是合理的。你知道吗

其次,当我通过GUI将测试集加载到倍频程中,并在相同的数据上执行相同的.m时,不会返回错误,[R,p]矩阵与昨晚保存的输出相同。我测试了矩阵var是否通过oct2py正确地传递到Octave,Octave是否接收到相同的矩阵。但是,oct2py在源代码中不能再执行带有nan检查的任何.m。对于任何一点包含.isnan的八度音阶打包的.m脚本,都会返回上述错误。你知道吗

对于s&g,我修改了my.m以接收矩阵var并将其写入平面文件,如下所示:

csvwrite ('filename', data);

这也会失败,并出现fprintf错误;如果我在Octave GUI内的同一个数据集上运行相同的代码,则工作正常。你知道吗

我在这里不知所措。我用相同的结果更新了conda、oct2py和Octave。同样地,在不到24小时之前,运行的带有精确数据的精确代码表现出了预期的效果。你知道吗

我在Jupyter笔记本中使用以下代码进行测试:

%env OCTAVE_EXECUTABLE = F:\Octave\Octave-5.1.0.0\mingw32\bin\octave-cli-5.1.0.exe
import oct2py
from oct2py import octave

octave.addpath('F:\\FinanceServer\\Python\\Secondary Docs\\autotesting\\atOctave_Scripts');
data = x
octave.push('data',data)
octave.eval('CorrCoefScript')
cmat = octave.pull('R')
enter code here

旁注-我只是在一个特定的.ipynb脚本中有这个问题。幸运的是,使用oct2py的其他脚本似乎没有受到影响。你知道吗


Tags: 数据代码from脚本data错误line矩阵
1条回答
网友
1楼 · 发布于 2024-04-27 03:35:25

把它修好了,但问题比答案多。我使用数据帧列表按类型循环,这样对于每个迭代ix都是通过x = dflst[i]生成的。由于我无法理解的原因,随着时间的推移,那次失败了。但是,通过将我的循环写入自定义函数并显式地调用该函数中的每个数据帧:oct_func(type1df),我看到了预期的行为和预期的结果。但是,我仍然不能使用循环将数据帧传递给oct_func()。所以,这是一个创可贴解决方案,将符合我的目的,但令人沮丧的是,无法扩展。你知道吗

编辑: 如果循环遍历数据帧的dict而不是列表,则循环可以正常工作。你知道吗

相关问题 更多 >