Tengo una tabla de datos que tiene una estructura similar a esta. Una tabla apilada de dimensiones con alrededor de 10-15k dimensiones posibles.Cada Cosa tiene aproximadamente 10 dimensiones.Y hay algo de Y asociado con él.
Names default to here(1);
ndim = 12000;
dt = new table("Example", <<ADD rows=""></ADD>
que luego estoy dividiendo en una tabla que es casi completamente escasa pero EXPLOTA la memoria.
dt << Split(
Split By( :Dim ),
Split( :Y ),
Group( :Thing ),
Sort by Column Property
);
Mi objetivo final es hacer KDTable() << K vecinos más cercanos en él.Pero se atasca mucho porque ahora hay muchos más datos de los que había originalmente. Y en realidad, los faltantes deben tratarse como 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 );
¿Alguien sabe una mejor manera de hacer esto?