【问题标题】:Classification using Approximate Nearest Neighbors in Scikit-Learn在 Scikit-Learn 中使用近似最近邻进行分类
【发布时间】:2016-09-26 16:04:56
【问题描述】:

我有一个带有 46D 特征集和大约 5000 个样本的标记数据集,我想使用近似最近邻对其进行分类。

由于我熟悉 Scikit-Learn,我想利用它来实现这个目标。

scikit 文档将 LSHForest 列为可能的 ANN 方法之一,但我不清楚如何将其应用于分类目的。

【问题讨论】:

    标签: machine-learning scikit-learn classification nearest-neighbor


    【解决方案1】:

    非常好的问题。不幸的是 scikit-learn 现在似乎不支持自定义邻居模型,但是您可以自己实现简单的包装器,例如

    from sklearn.neighbors import LSHForest
    import numpy as np
    from scipy.stats import mode
    
    class LSH_KNN:
    
        def __init__(self, **kwargs):
            self.n_neighbors = kwargs['n_neighbors']
            self.lsh = LSHForest(**kwargs)
    
        def fit(self, X, y):
            self.y = y
            self.lsh.fit(X)
    
        def predict(self, X):
            _, indices = self.lsh.kneighbors(X, n_neighbors = self.n_neighbors)
            votes, _ = mode(self.y[indices], axis=1)
            return votes.flatten()
    

    【讨论】:

    • 感谢您的回复。我一定会检查一下。您能否也告诉我,是否有任何方法可以集成FLANN 的近似邻居查找机制。我的主要问题是,我有所有这些 ANN 库可供我使用,它们计算距离和索引,我如何在 sklearn 中将它们用于分类目的?
    • 你必须编写自己的包装器,就像任何东西一样
    • 感谢您的意见。这真的很有帮助:)
    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 2021-11-04
    • 2017-05-02
    • 2015-03-18
    • 2021-12-26
    • 2020-10-31
    • 2016-06-01
    • 2019-09-10
    相关资源
    最近更新 更多