李航《统计学习方法》K近邻代码

import numpy as np
import pandas as pd
import time#加载数据集,使用numpy进行加载
def loadData(filename):print('start to load data')dataArr = []labelArr = []fr = open(filename,'r')for line in fr.readlines():curLine = line.strip().split(',')dataArr.append([int(num)/255 for num in curLine[1:]])labelArr.append(int(curLine[0]))return dataArr,labelArr#计算两个向量之间的欧氏距离,p=2
def calcDist(x1,x2):#x1 - x2 两个大小为1 * n 的向量相减return np.sqrt(np.sum(np.square(x1 - x2)))def getClosest(trainDataMat, trainLabelMat, x, topK):#建立一个存放向量x与训练集中样本距离的列表#列表的长度为训练集的长度distList = [0] * len(trainDataMat)#遍历训练集中的所有样本点,计算与x之间的距离for i in range(len(trainDataMat)):xi = trainDataMat[i]curDist = calcDist(xi,x)distList[i] = curDist#距离列表进行升序排列,然后取前K个#np.argsort()对矩阵按axis进行排序并返回排序后的下标topKList = np.argsort(np.array(distList))[:topK]#这里之所以建立一个大小为10的list是因为mnist数据集的类别数就是10,每个位置存放的是对应index的个数#目的是为了找出topK中数量最多的indexlabelList = [0] * 10for index in topKList:labelList[int(trainLabelMat[index])] += 1return labelList.index(max(labelList))def model_test(trainDataArr,trainLabelArr,testDataArr,testLabelArr,topK):print('start to test')trainDataMat = np.mat(trainDataArr); trainLabelMat = np.mat(trainLabelArr).TtestDataMat = np.mat(testDataArr); testlabelMat = np.mat(testLabelArr).TerrorCnt = 0for i in range(200):print('test %d:%d' %(i+1,200))x = testDataMat[i]y = getClosest(trainDataMat,trainLabelMat,x,topK)if y != testlabelMat[i]:errorCnt += 1return 1 - (errorCnt / 200)if __name__ == "__main__":#获取程序开始时的时间start = time.time()#获取训练数据集trainDataArr,trainLabelArr = loadData('./mnist_train.csv')testDataArr,testLabelArr = loadData('./mnist_test.csv')#计算测试集的准确率accur = model_test(trainDataArr,trainLabelArr,testDataArr,testLabelArr,25)end = time.time()#打印正确率print('the accuracy rate is:',accur)#打印程序运行时间print('the run time is:',end - start)

李航《统计学习方法》K近邻代码相关推荐

  1. 统计学习方法|K近邻原理剖析及实现

    欢迎直接到我的博客查看最近文章:www.pkudodo.com.更新会比较快,评论回复我也能比较快看见,排版也会更好一点. 原始blog链接: http://www.pkudodo.com/2018/ ...

  2. 统计学习方法——K近邻模型

    0. 写在前面 在这一讲的讨论班中,我们将要讨论一下K近邻模型.可能有人会说,K近邻模型有什么好写的,那分明就是一个最简单的机器学习模型,哦,不,连机器学习也算不上的算法吧.但是这里,我想提醒的是,我 ...

  3. 统计学习方法 | K 近邻法

    一.简介 1.直观理解 定义:是一种基本的分类与回归方法 主要思想:假定给定一个训练数据集,其中实例标签已定,当输入新的实例时,可以根据其最近的K个训练实例的标签,预测新实例对应的标注信息 分类问题: ...

  4. 复习03统计学习方法(K近邻KNN)---图片版

  5. 李航老师《统计学习方法》的代码实现、课件、作业等相关资源的最全汇总

    编辑 | Will 出品 | 字节AI 李航:毕业于日本京都大学电气电子工程系,日本东京大学获得计算机科学博士学位.1990年至2001年就职于日本NEC 公司中央研究所,任研究员,2001年至201 ...

  6. 缺失数据em算法python_重磅!李航《统计学习方法》Python 代码更新,适应第二版!...

    重磅!李航<统计学习方法>Python 代码更新,适应第二版! 点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 李航的<统计 ...

  7. 李航《统计学习方法》感知机代码

    李航<统计学习方法>感知机代码 import numpy as np import timedef loadData(filename):'''加载minist训练集数量:60000测试集 ...

  8. 机器学习:李航-统计学习方法-代码实现

    <统计学习方法>的代码实现分享 <统计学习方法>这本书,附件里并没有代码实现,于是许多研究者复现了里面算法的代码,并放在github里分享,这里介绍几个比较热门的<统计学 ...

  9. 统计学习方法 pdf_李航统计学习方法(第三章)

    第3章 k 近邻法 k 近邻法(k-NN)是一种基于实例的学习方法,无法转化为对参数空间的搜索问题(参数最优化问题).它的特点是对特征空间进行搜索.除了k近邻法,本章还对以下几个问题进行较深入的讨论: ...

最新文章

  1. oracle minus 与sqlserver except
  2. 福州大学数学专业matlab教材,福州大学MATLAB基础实验指导书
  3. OSPF虚拟链路实验
  4. 2.innodb后台线程
  5. 开源Math.NET基础数学类库使用(11)C#计算相关系数
  6. Python爬虫应用实战-如何对爬取的数据进行数据存储?
  7. 在 Python 中使用 OpenCV 高斯模糊我这张的丑脸
  8. Little Sub and AA
  9. 光栅衍射主极大个数_大学物理——光的干涉和衍射(二)
  10. bootstrap 导航菜单 折叠位置_python测试开发django44.xadmin自定义菜单项
  11. extjs中滚动条属性_前端学习随笔6 盒模型及相关属性
  12. redis设计与实现 二
  13. JAVA数据库增删改查
  14. CVPR2022论文速递(2022.4.12)!共24篇!GAN/transformer/超分等
  15. citrixreceiver云桌面系统_Citrix Receiver(虚拟桌面软件)V5.0 正式版
  16. 用认真的态度面对人生用心的思考
  17. python中得到26个字母
  18. 苹果处理器排行_最新 iOS 性能排行榜,你的设备落伍了吗?
  19. 阴阳师自动御魂觉醒超鬼王脚本
  20. IPV6到IPV4的转换

热门文章

  1. 审核和发送环节脱离?!看TOP级企业如何解决安全管理问题
  2. 孙陶然:公司要与员工分享
  3. 图卷积网络原理(二)【图信号与图的拉普拉斯矩阵】
  4. VS常见问题|VS LNK1168错误 有效解决方法
  5. CSS基础笔记(多看多记冲冲冲)
  6. SpringMVC的核心架构示意图<搬代码>
  7. HA高可用HADOOP生态群系统搭建
  8. Failed to push the item
  9. scrapy微博反爬虫_Scrapy 爬取新浪微博(解析api)
  10. 成功解决:Updates were rejected because the tip of your current branch is behind its remote...【解决方法】