'''
本程序用KNN算法实现对手写数据(0-9)的识别,k取值影响算法正确率,大家可以自行测试
k = 8,错误率 22%
k = 5,错误率 17%
k = 4,错误率 14%
k = 3,错误率 11%
k = 2,错误率 13%
'''
from numpy import * #科学运算模块
import operator #运算符模块
from os import listdir
"""
classify0(inX, dataSet, labels, k)是KNN算法分类器,也是这个算法的核心
inX 要识别的数据:1 x 1024数组,一个要识别的图像
dataset 训练数据矩阵:m x 1024,每行是一个训练图像
labels 标签,分类器:1 x m
k 选择近邻的几个
"""
def classify0(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0] #读取矩阵dataset第一维度长度
diffMat = tile(inX, (dataSetSize,1)) - dataSet
#把inx在行上复制成datasetsize行,在列上复制成1列,即不变。
#diffmat:m x 1024,要识别的数据与训练数据矩阵的差值
sqDiffMat = diffMat**2 #sqDiffMat: m x 1024.各个元素分别平方
sqDistances = sqDiffMat.sum(axis=1)#sqDistances:1 x m ,对矩阵每行求和
distances = sqDistances**0.5 #开根号 distances :1 x m
#以上是求
详解KNN算法的python实现
最新推荐文章于 2022-03-25 16:43:48 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)