fengdu78 / lihang-code

《统计学习方法》的代码实现
18.66k stars 6.26k forks source link

knn的 predict的优化 #38

Open farsmile opened 4 years ago

farsmile commented 4 years ago

手动实现向量化的norm,应该通用性更好一些, 是否可行,请指正: def predict_leon(self, X): dist = np.power(X - self.X_train, self.p).sum(axis=1) dist = np.power(dist, 1 / self.p) knn = self.y_train[np.argsort(dist)[:self.n]]

    # 统计
    count_pairs = Counter(knn)
    max_count = sorted(count_pairs.items(), key=lambda x: x[1])[-1][0]
    return max_count
gaojianchina commented 4 years ago

同样是这个问题, 原代码中 max_count = sorted(count_pairs.items(), key=lambda x: x[1])[-1][0] 可以直接用 max_count=count_pairs.most_common(1)[0][0] 代替