我正在尝试在相当大的数据集上使用 scikit learn 的 k 最近邻实现。问题是预测需要很长的时间,几乎和训练一样长,这是没有意义的。是算法的问题,还是 scikit learn 不适用于大型数据集(不支持 GPU)这一事实。
有关更多信息,我正在尝试根据 x、y、z 和对象标签来预测激光雷达强度。每个激光雷达扫描都有大约 100,000 个点,因此我试图预测每个点的强度。
最佳答案
尝试使 scikit-learn 的事情 KNeighborsClassifier
跑得更快:
- 不同
algorithm
参数:kd_tree
,ball_tree
对于低维数据,brute
对于高维数据 -
n_jobs
范围。使用更大的n_jobs
并不一定会让事情变得更快,有时甚至相反。 - 确保您使用的是最新版本:v0.22 中进行了性能改进以及一些尚未合并的优化 ( scikit-learn#14543 )
- 使用外部近似最近邻库(例如 Annoy )以及使用
metric="precomputed"
预先计算的稀疏距离
关于python - k 最近邻回归本质上很慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59178717/