【问题标题】:Does sklearn kNN (NearestNeighbors) do batch processing?sklearn kNN (NearestNeighbors) 做批处理吗?
【发布时间】:2020-08-10 23:59:18
【问题描述】:

我正在使用 sklearn 的 knn 算法对数据集进行训练。我想知道如果我的数据集包含数百万行,我们可以在这里进行批处理吗?

from sklearn.neighbors import NearestNeighbors
nbrs = NearestNeighbors(n_neighbors=6, algorithm='ball_tree').fit(new_features)
distances, indices = nbrs.kneighbors(new_features)

【问题讨论】:

    标签: python scikit-learn batch-processing knn


    【解决方案1】:

    NearestNeighbors 是一种基于实例的算法。当您给出一个测试数据点时,它会使用一些相似性方法(如最短距离)来计算与火车的相似性。所以实际上NearestNeighbors 算法中没有发生学习。在拟合阶段,它创建数据结构来排列训练数据,以便在预测期间进行搜索更快。所以不,你不能像在神经网络中那样进行批处理。

    一般来说,不使用梯度优化来训练权重的 ML 算法不能被批处理。以decision trees 为例,您需要完整的火车数据集来计算某些值(比如基尼指数)来决定如何建造火车。所以不,对于决策树,您不能进行批处理。

    【讨论】:

      【解决方案2】:

      绝对不在 sklearn 中。批处理是特定于算法的。例如,有MiniBatchKMeansSGDClassifier。然而,没有批处理版本的 kNN。

      主要原因是对任意点的快速邻居搜索的要求。为此,通常使用 KD-tree 或 Ball-tree,这需要额外的工作来保持其在批量训练中的属性。更多解释可以看this question和对应的answer

      【讨论】:

        猜你喜欢
        • 2018-12-21
        • 2018-12-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-11
        • 2018-10-08
        • 2013-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多