详解KNN算法的python实现

本文深入探讨了K近邻(KNN)算法,并提供了详细的Python实现步骤,从数据预处理到模型训练与评估,全面解析KNN在分类任务中的应用。
摘要由CSDN通过智能技术生成
'''
本程序用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
    #以上是求
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值