在 Scikit-Learn 中使用近似最近邻进行分类
Classification using Approximate Nearest Neighbors in Scikit-Learn
我有一个带有 46D 特征集和大约 5000 个样本的标记数据集,我想使用近似最近邻法对其进行分类。
由于我熟悉 Scikit-Learn,所以我想利用它来实现这个目标。
scikit 文档将 LSHForest 列为 ANN 的可能方法之一,但我不清楚如何将其应用于分类目的。
非常好的问题。不幸的是,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()
我有一个带有 46D 特征集和大约 5000 个样本的标记数据集,我想使用近似最近邻法对其进行分类。
由于我熟悉 Scikit-Learn,所以我想利用它来实现这个目标。
scikit 文档将 LSHForest 列为 ANN 的可能方法之一,但我不清楚如何将其应用于分类目的。
非常好的问题。不幸的是,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()