使用Scikit-Learn中的近似最近邻居进行分类

时间:2016-05-28 11:19:57

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

我有一个带有46D特征集的标签数据集和大约5000个我希望使用近似最近邻居进行分类的样本。

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

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

1 个答案:

答案 0 :(得分:3)

非常好的问题。不幸的是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()