KNN(K近邻算法)
基础理解
面对这个算法需要蹦出来几个问题:KNN是什么?可以解决什么问题?怎么实现?有什么优缺点?
首先,KNN我们通常称之为K近邻算法,通俗的理解便是如果我们认为两个特征之间他们足够相似,我们就有理由认为他们属于同一个类别。
丰富上一小节的一张图以后:
接着,通常情况下我们使用KNN是用来解决分类问题,当然,很少情况下我们也会使用它来解决回归问题。
其主要的解决思路为:
①求出我们需要预测的点与数据集中的点之间的距离,根据初中所学,我们使用欧拉距离来表示。
②将距离进行排序,找前k个中出现次数最多的便是我们的预测结果。
代码实现:(Github处于外网,所以我在这里直接贴上自己封装的KNN算法)
源码在源码中
import numpy as np
from collections import Counter
from math import sqrt
class KNeighborsClassifier:
def __init__(self,k):
'''check'''
assert k>=1,"K must be valid"
self.k = k
'''private'''
self._X_train = None
self._y_train = None
def fit(self,X,y):
'''check'''
assert X.shape[0] == y.shape[0],\
"The data size must be valid"
assert self.k <= y.shape[0],\
"K must be valid"
self._X_train = X
self._y_train = y
'''according to the scikit-learn,we need to return self'&#