kNN(k-nearest neighbor algorithm)算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。简单地说,K-近邻算法采用测量不同特征值之间的距离方法进行分类。
- 优点:精度高、对异常值不敏感、无数据输入假定。
- 缺点:计算复杂度高、空间复杂度高。
- 适用数据范围:数值型和标称型。
举个简单的例子,一群男生和一群女生,我们知道他们的身高和性别。
如下表格:
身高 | 性别 |
---|---|
165 | 女 |
166 | 女 |
169 | 女 |
175 | 男 |
178 | 男 |
180 | 男 |
190 | 男 |
179 | 未知 |
这里有8位同学,已知所有人的身高,其中7个人的性别,还有位同学只知道身高,那么这位同学可能是男生还是女生。
下面我们利用KNN算法来分类:
1. 求这位同学跟其他同学的身高差;
2. 设定一个K值,选择跟这位同学身高相差最小的K个同学;
3. 在这K个同学中,哪种性别的人多,就认为这位同学属于哪种性别。
举例:设K为5
计算这位同学与其他同学的身高差的绝对值:如下
身高差的绝对值 | 性别 |
---|---|
14 | 女 |
13 | 女 |
10 | 女 |
4 | 男 |
1 | 男 |
1 | 男 |
11 |