山东大学模式识别KNN实验报告.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
山东大学 软件 学院 模式识别 课程实验报告 ? 学号:201500301139 姓名: 修丙楠 班级: 15级软件二班 实验题目:KNN 实验学时: 实验日期: 2018.1.19 实验目的: 使用K-NN算法识别数字0-9,数据集来自Machine Learning in Action 第二章。书中把来自UCI数据库的手写数据集简化成32像素x32像素的黑白图像,并且以01矩阵的方式存储在txt文件中。大约有训练样本2000个,测试样本900个。 硬件环境:? Processor: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (4 CPUs), ~2.7GHz 软件环境: Eclipse 实验步骤与内容: 实验一: 实验要求: 1.实现最基本的KNN算法,使用trainingDigits文件夹下的数据,对testDigits中的数据进行预测。(K赋值为1,使用欧氏距离,多数投票决定分类结果) 2.改变K的值,并观察对正确率的影响。 3.更改距离度量方式,更改投票方式(距离加权),分析错误率。 实验步骤: 1、(1)KNN分析: KNN的算法思想比较简单,对于每一个测试集样本,计算其与所有训练集样本间的欧氏距离,对所有结果进行排序,选取其中距离最小的k个样本,采用多数投票的方式确定该测试集样本所属的类型。 (2)算法实现: ·读文件:利用Java里提供的BufferedReader进行读文件操作,将读进来的样本以二维数组的形式存储 ·排序:选了冒泡排序的方法(因为写起来简单) ·找出k近邻中出现次数最多的元素:用HashMap的key值存储每个元素出现的次数,最后返回key值最大的节点对应的元素。 (3)代码运行结果 为了比较K的值对结果的影响,测试取了1-20之间的数作为k值 运行结果如下: 图1 1-NN 图2 2-NN 图3 1~20-NN 绘制表格如下: K值 准确率(%) 1 98.73 2 98.52 3 98.63 4 98.52 5 98.10 6 98.20 7 97.89 8 97.46 9 97.78 10 97.89 11 97.89 12 97.78 13 97.36 14 97.57 15 97.36 16 97.57 17 97.15 18 97.36 19 97.25 20 97.25 绘制散点图如下: 可以看到,随着K值的增加,预测的准确率反而逐渐降低,这与理论上样本足够多,K值足够大,正确率会越好的想法冲突,可能是K值增大后噪声点增多? 2、更改距离度量方式 可以考虑采用曼哈顿距离进行距离度量 更改投票方式:让离的越近的样本点的权重值越大。可以代用高斯模板进行度量。 实验二: KNN应用场景: 它的特点是完全跟着数据走,没有数学模型可言。 需要一个特别容易解释的模型的时候。 比如需要向用户解释原因的推荐算法。 比如文字识别,面部识别;预测某人是否喜欢推荐电影(Netflix);基因模式识别,比如用于检测某中年疾病;客户流失预测、欺诈侦测(更适合于稀有事件的分类问题) KNN应用场景:通常最近邻分类器使用于特征与目标类之间的关系为比较复杂的数字类型,或者说二者关系难以理解,但是相似类间特征总是相似。 引用来源: /question/qqarticle/details/liyuefeilong/article/detailsKD树 KD树的思想上课学长有具体讲过 Kd-树 其实是K-dimension tree的缩写,是对数据点在k维空间中划分的一种数据结构。其实,Kd-树是一种平衡二叉树,图示如下 参考来源: /snakehand/archive/2012/08/13/2636236.html /item/kd-tree/2302515?fr=aladdin Hash Map 本次代码中有用到 实验三:协同过滤 关于协同过滤的一个最经典的例子就是看电影,有时候不知道哪一部电影是我们喜欢的或者评分比较高的,那 么通常的做法就是问问周围的朋友,看看最近有什么好的电影推荐。在问的时候,都习惯于问跟自己口味差不 多的朋友,这就是协同过滤的核心思想。 协同过滤是在海量数据中挖掘出小部分与你品味类似的用户,在协同过滤中,这些用户成为邻居,然后根据他 们喜欢的东西组织成一个排序的目录推荐给你。所以就有如下两个核心问题 (1)如何确定一个用户是否与你有相似的品味? (2)如何将邻居们的喜好组织成一个排序目录? 协同过滤算法的出现标志着推荐系统的产生,协同过滤算法包括基于用户和基于物品的协同过滤算法。 2. 协同过滤的核心

文档评论(0)

anma + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档