我有一個結構與此類似的數據表。 可能有大約 10-15k 維度的堆疊維度表。每個事物大約有 10 個維度。還有一些與之相關的Y。
Names default to here(1);
ndim = 12000;
dt = new table("Example", <<ADD rows=""></ADD>
然後我將其拆分為一個幾乎完全稀疏但會爆炸內存的表。
dt << Split(
Split By( :Dim ),
Split( :Y ),
Group( :Thing ),
Sort by Column Property
);
我的最終目標是在它上面做 KDTable() << K 最近的鄰居。但它陷入了很多困境,因為現在的數據比原來多得多。 實際上,缺失應該被視為 0。
//this takes quite some time(in fact I've never actually finished it because I runout of memory)
mat = dt[0, [2::ncols(dt)]];
//changing the missings to zeros
mat[loc(ismissing(mat))] = 0;
kdt = KDTable(mat);
{rows, dist} = kdt << K nearest rows( {3, 2.0}, 1 );
有誰知道更好的方法來做到這一點?