簡體   English   中英

Octave isnan:使用 oct2py 未定義錯誤

[英]Octave isnan: not defined error using oct2py

使用 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 將測試集加載到 Octave 並在相同數據上執行相同的 .m 時,不會返回任何錯誤,並且 [R,P] 矩陣與昨晚保存的輸出相同。 我測試了矩陣 var 是否通過 oct2py 正確傳遞給 Octave,並且 Octave 接收到相同的矩陣。 但是,oct2py 不能再通過源代碼中的 nan 檢查來執行任何.m 文件。 對於任何包含 .isnan 的 Octave 打包 .m 腳本,都會返回上述錯誤。

對於 s&g,我修改了 .m 以接收矩陣 var 並將其寫入平面文件,如下所示:

csvwrite ('filename', data);

這也會因 fprintf 錯誤而失敗; 如果我在 Octave GUI 內的同一數據集上運行相同的代碼,則工作正常。

我在這里不知所措。 我用相同的結果更新了 conda、oct2py 和 Octave。 同樣,具有確切數據的確切代碼在不到 24 小時前按預期運行。

我在 Jupyter Notebook 中使用以下代碼進行測試:

%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 的其他腳本似乎沒有受到影響。

修復了它,但它產生的問題多於答案。 我正在使用數據幀列表按類型循環,這樣對於每次迭代ix都是通過x = dflst[i] 由於我無法理解的原因,隨着時間的推移,這失敗了。 但是,通過將我的循環寫入自定義函數並顯式調用該函數中的每個數據框,如下所示: oct_func(type1df)我看到了預期的行為和預期的結果。 但是,我仍然無法使用循環將數據幀傳遞給oct_func() 因此,這是一個符合我的目的的創可貼解決方案,但令人沮喪的是無法擴展。

編輯:如果遍歷數據幀的字典而不是列表,則循環工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM