KNN分类原理:
局部学习方法:
思想:K-NN算法的核心:在训练集中选取距离输入的数据点最邻近的K个邻居,根据这个K个邻居中出现次数最多的类别(最大表决规则),作为该数据点的类别。
-
计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);
-
对上面所有的距离值进行排序;
-
选前k个最小距离的样本;
-
根据这k个样本的标签进行投票,得到最后的分类类别;
KNN的修正:
1.经典k邻域的样本点对预测结果的贡献度是相等的。
2.而一个简单的思想是距离更近的样本点应有更大的相似度,其贡献度应比距离更远的样本点大。
修正公式:
from sklearn.neighbors import KNeighborsClassifier
x = [[0],[1],[2],[3]]
y = [0,0,1,1]
neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(x,y)
print(neigh.predict([[1.1]]))
print(neigh.predict_proba([[0.9]]))
KNN优缺点:
-
优点:精度高、对异常值不敏感、无数据输入假定。
-
缺点:计算复杂度高、空间复杂度高。
-
适用数据范围:数值型和标称型。
*学习资料:DC学院