J'ai une table de données qui a une structure similaire à celle-ci. Un tableau empilé de dimensions avec environ 10-15k dimensions possibles.Chaque chose a environ 10 dimensions.Et il y a un Y qui lui est associé.
Names default to here(1);
ndim = 12000;
dt = new table("Example", <<ADD rows=""></ADD>
que je divise ensuite en une table qui est presque entièrement clairsemée mais qui EXPLOSE la mémoire.
dt << Split(
Split By( :Dim ),
Split( :Y ),
Group( :Thing ),
Sort by Column Property
);
Mon objectif final est de faire KDTable() << K voisins les plus proches dessus.Mais cela s'enlise beaucoup parce qu'il y a maintenant une tonne de données en plus qu'il n'y en avait à l'origine. Et en réalité, les manquants devraient être traités comme des 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 );
Est-ce que quelqu'un connaît une meilleure façon de faire cela?