我正在尝试在相当大的数据集上使用scikit Learn中的k个最近邻居实现。问题在于,预测要花很长时间,几乎和没有意义的训练一样长。这是算法的问题,还是scikit learning不是针对大型数据集(不支持GPU)的事实。
有关更多信息,我尝试基于x,y,z和对象标签预测激光雷达强度。每次激光雷达扫描都有100,000个点,因此我试图预测每个点的强度。
答案 0 :(得分:1)
尝试使scikit-learn的KNeighborsClassifier
运行更快的东西:
algorithm
参数:kd_tree
,ball_tree
用于低维数据,brute
用于高维数据n_jobs
参数。使用较大的n_jobs
不一定会使事情变快,有时反之亦然。metric="precomputed"
预先计算的稀疏距离答案 1 :(得分:0)
最近邻居回归中计算量最大的部分是找到您要预测的数据点x
的最近邻居,因为暴力搜索是O(training data size)
。一种常见的策略是将训练数据预处理为数据结构,例如为快速近邻查询而设计的kdtree。如果您的数据在3D欧几里得空间中,则可能要考虑对这种数据结构使用四叉树。有关使用四叉树的最近邻居搜索,请参见this repository。