我想从头开始编写自己的kNN算法,原因是我需要权衡这些功能。问题是尽管删除了for循环并使用了内置的numpy功能,我的程序仍然非常慢。
谁能建议一种加快速度的方法?我不使用np.sqrtL2距离,因为这是不必要的,实际上会使速度大大降低。
class GlobalWeightedKNN:
"""
A k-NN classifier with feature weights
Returns: predictions of k-NN.
"""
def __init__(self):
self.X_train = None
self.y_train = None
self.k = None
self.weights = None
self.predictions = list()
def fit(self, X_train, y_train, k, weights):
self.X_train = X_train
self.y_train = y_train
self.k = k
self.weights = weights
def predict(self, testing_data):
"""
Takes a 2d array of query cases.
Returns a list of predictions for k-NN classifier
"""
np.fromiter((self.__helper(qc) for qc in testing_data), float)
return …Run Code Online (Sandbox Code Playgroud)