이와 유사한 구조의 데이터 테이블이 있습니다. 약 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 );
누구든지 이것을하는 더 좋은 방법을 알고 있습니까?