Ich habe eine Datentabelle, die eine ähnliche Struktur wie diese hat. Eine gestapelte Dimensionstabelle mit ca. 10-15k Dimensionen möglich.Jedes Ding hat ungefähr 10 Dimensionen.Und es ist ein gewisses Y damit verbunden.
Names default to here(1);
ndim = 12000;
dt = new table("Example", <<ADD rows=""></ADD>
die ich dann in eine Tabelle aufteile, die fast vollständig spärlich ist, aber den Speicher EXPLODIERT.
dt << Split(
Split By( :Dim ),
Split( :Y ),
Group( :Thing ),
Sort by Column Property
);
Mein Endziel ist es, KDTable() << K nächste Nachbarn darauf zu machen.Aber es gerät sehr ins Stocken, weil es jetzt eine Menge mehr Daten gibt als ursprünglich. Und in Wirklichkeit sollten die fehlenden Werte als 0 behandelt werden.
//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 );
Kennt jemand einen besseren Weg, dies zu tun?