我正在尝试在 Python 上使用 FLANN,训练集矩阵为 6,000,000 x 100。我正在使用以下命令构建索引:
flann = pyflann.FLANN()
params = flann.build_index(trainX, algorithm="autotuned", target_precision=0.9, sample_fraction=0.1, log_level="info")
我得到了很多交叉验证结果,最后几行显示了这一点:
***Earlier results omitted***
KDTree using params: trees=32
Nodes Precision() Time(s) Time/vec(ms) Mean dist
---------------------------------------------------------
1 0.084 0.15658 0.15658 2.9036
2 0.098 0.15296 0.15296 2.097
4 0.137 0.15613 0.15613 1.6675
8 0.213 0.15454 0.15454 1.3968
16 0.324 0.16528 0.16528 1.2296
32 0.445 0.16481 0.16481 1.1253
64 0.567 0.20677 0.20677 1.0767
128 0.685 0.28533 0.28533 1.0437
256 0.777 0.42094 0.42094 1.027
512 0.863 0.73215 0.73215 1.0142
1024 0.916 1.2737 1.2737 1.0062
Start linear estimation
768 0.895 0.94626 0.94626 1.0086
896 0.903 1.073 1.073 1.0077
832 0.899 1.0092 1.0092 1.0081
KDTree buildTime=71.6163, searchTime=1.00915
----------------------------------------------------
Autotuned parameters:
algorithm : 1
trees : 8
----------------------------------------------------
Computing ground truth
Estimating number of checks
Nodes Precision() Time(s) Time/vec(ms) Mean dist
---------------------------------------------------------
1 0.445 3.053 3.053 2.0321
2 0.445 2.7963 2.7963 2.0321
4 0.457 3.2702 3.2702 1.514
8 0.475 3.0651 3.0651 1.321
16 0.503 3.0939 3.0939 1.1812
32 0.527 3.1058 3.1058 1.1132
64 0.57 3.6118 3.6118 1.0734
128 0.608 3.6885 3.6885 1.0467
256 0.642 3.3601 3.3601 1.0306
512 0.672 3.2895 3.2895 1.0187
1024 0.712 3.7659 3.7659 1.0087
2048 0.732 4.7198 4.7198 1.0047
4096 0.745 5.3416 5.3416 1.0027
8192 0.757 7.7298 7.7298 1.0012
16384 0.762 11.114 11.114 1.0006
32768 0.77 17.114 17.114 1.0001
65536 0.772 31.03 31.03 1
131072 0.772 61.822 61.822 1
262144 0.772 133.58 133.58 1
524288 0.773 284.51 284.51 1
1048576 0.773 605.73 605.73 1
2097152 0.773 1437.5 1437.5 1
4194304 0.773 3971.2 3971.2 1
8388608 0.773 6485.3 6485.3 1
16777216 0.773 6476.2 6476.2 1
33554432 0.773 6456.1 6456.1 1
67108864 0.773 6494.2 6494.2 1
在我看来,已经选择了具有 8 棵树的 KDTree(算法 = 1)。但是现在最后一系列测试“估计检查次数”被卡住了。它已经运行了一夜,但还没有完成。我认为这是因为精度无法达到我的 0.9 目标,所以它只是不断增加节点。
有人可以建议我如何进行吗?我应该杀死它并使用“自动调整参数”手动指定一个 kd-tree 吗?无论如何,它正在计算的“检查次数”是多少-我认为已经找到了树和节点的数量?