使用k-近邻算法改进约会网站的配对效果以及手写数字识别测试

news/2024/5/20 4:45:14/文章来源:https://blog.csdn.net/qq_38290604/article/details/94285142

创建k-近邻算法分类器

def classify0(inX,dataSet,labels,k):## inX:用于分类的输入向量## dataSet:输入的训练样本集## labels:训练样本标签## k:选择的近邻数目dataSetSize=dataSet.shape[0] ##样本集的数目diffMat=tile(inX,(dataSetSize,1))-dataSet ##输入向量与训练样本相减sqDiffMat=diffMat**2 ##两个样本点之间的距离的平方sqDistance=sqDiffMat.sum(axis=1) ##所有样本点之间距离的平方相加distance=sqDistance**0.5 ##所有样本点之间距离的平方和开根号sorted_d=distance.argsort() ##对其进行排序classCount={}for i in range(k):votel=labels[sorted_d[i]] ##距离从小到大的样本点对应类别classCount[votel]=classCount.get(votel,0)+1 ##该类别的数目加1sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) ##排序return sortedClassCount[0][0] ##选取第一个即为分类结果

读取约会数据

数据存放在一个名为datingTestSet2.txt的文件中,每个样本数据占据一行,共1000行,每行包含三个特征。
在这里插入图片描述

def file2matrix(filename):fr=open(filename)arrayOLines=fr.readlines()numberarray=len(arrayOLines)returnMat=zeros((numberarray,3))classLabel=[]index=0for line in arrayOLines:line=line.strip() ##去掉两头的空格listline=line.split('\t') ##以\t划分returnMat[index,:]=listline[0:3] ##将新数据加入到returnMatclassLabel.append(int(listline[-1])) ##将新数据的类别加入到classLabelindex+=1return returnMat,classLabel

对所有数据归一化处理

在处理不同取值范围的特征数据时,通常采用归一化数值的方法,将取值范围处理为0到1或者-1到1之间。使用下边的公式既可实现;

newValue=(oldValue−min)/(max−min)newValue=(oldValue-min)/(max-min)newValue=(oldValuemin)/(maxmin)

def autoNorm(returnMat):min=returnMat.min(0)max=returnMat.max(0)range=max-minnormDataSet=zeros(shape(returnMat))m=returnMat.shape[0]normDataSet=returnMat-tile(min,(m,1))normDataSet=normDataSet/tile(range,(m,1))return normDataSet

测试分类器的准确率

def datingClassTest():hoRatio=0.1 ##选取10%的数据作为测试集datingDataMat,datingLabels=file2matrix('datingTestSet2.txt') ##从文件中读取数据normMat=autoNorm(datingDataMat) ##对数据进行归一化处理m=normMat.shape[0] numTestVecs=int(m*hoRatio) ##测试集的数目errorCount=0.0for i in range(numTestVecs):classifierResult=classify0(normMat[i,:],normMat[numTestVecs:m,:],datingLabels[numTestVecs:m],3)print('The classifier came back with:%d,the real result is %d.'%(classifierResult,datingLabels[i]))if classifierResult!=datingLabels[i]:errorCount+=1print('The total error rate is:%f.'%(errorCount/float(numTestVecs)))

约会结果运行结果

在这里插入图片描述

手写数字识别系统读取文件数据

##将32x32的数据转变为1x1024
def img2vector(filename):returnVect=zeros((1,1024))fr=open(filename)for i in range(32):linestr=fr.readline()for j in range(32):returnVect[0,32*i+j]=int(linestr[j])return returnVect

手写数字识别

##数据分为两个文件夹,一个是测试数据集,一个是验证数据集。
##首先将测试数据集中的数据以1x1024格式导出,放入trainingMat列表中;然后将验证集中的数据以同样的方式导出,放入分类器中进行分类,所用分类器是前边的k-近邻分类法。将分类器产生的类别与实际类别对比,得到准确率。文本名称是数字的类别,所以对于数据集的类别,可以对文本名称进行提取。
def handwritingClassTest():hwLabels=[]trainingFileList=listdir('trainingDigits')m=len(trainingFileList)trainingMat=zeros((m,1024))##训练集数据以及类别导出for i in range(m):fileNamestr=trainingFileList[i]filestr=fileNamestr.split('.')[0]classNumStr=int(filestr.split('_')[0])hwLabels.append(classNumStr)trainingMat[i,:]=img2vector('trainingDigits/%s' % fileNamestr)testFileList=listdir('testDigits')errorCount=0.0mTest=len(testFileList)##验证集数据的训练for i in range(mTest):fileNameStr=testFileList[i]fileStr=fileNameStr.split('.')[0]classNumStr=int(fileStr.split('_')[0])vectorUnderTest=img2vector('testDigits/%s' % fileNameStr)classifierResult=classify0(vectorUnderTest,trainingMat,hwLabels,3)print('the classifier came back with:%d,the real answer is:%d.' % (classifierResult,classNumStr))if classifierResult!=classNumStr:errorCount+=1.0print('The total number of errors is:%d.' % errorCount)print('The total error rate is:%f' % (errorCount/float(mTest)))

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_845714.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode算法总结(基于carl网站)

前言 本篇参考链接: 代码随想录. 所有类型题都可在网站里找到,这里不做详细标注 数组 二分查找 适用情况:在已经排序好的数组(元素无重复)中快速找到某一个满足条件的元素。 例题: 给定一个 n 个元素有序的&#x…

jsp获取网站域名 域名解析

部署主机如果有弄域名解析的话 访问http://www.domain.com时会自动请求到相应的页面http://ip:port/webApp/index.jsp 此时在index.jsp代码 Html代码 String basePath request.getScheme()"://"request.getServerName()":"request.getServerPort()path&q…

可扩展、高可用、负载均衡网站架构设计方案

可扩展、高可用、负载均衡网站架构设计方案作者:田逸(sery163.com) 本作品已刊登在《IT实验室周报》第6期第6版基本需求: 1、高可用性:将停止服务时间降低到最低甚至是不间断服务2、可扩展性:随着访问的增加,系统具备良好的伸缩能…

大流量网站的底层系统架构

动态应用,是相对于网站静态内容而言, 是指以c/c、php、Java、perl、.net等 服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通 常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用…

一步步构建大型网站架构

来源: itivy 发布时间: 2011-05-02 20:21 阅读: 6335 次 原文链接 全屏阅读  [收藏] 之前我简单向大家介绍了各个知名大型网站的架构,MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型,我…

13个超棒的代码资源网站推荐

很多开发者都有过网站开发的经历,大家使用CSS、HTML以及JavaScript等技术来完成这一工作。但想必大家也知道,网站开发是一个很耗费时间的工作。你可能需要花费大量的时间在一些网站上寻找解决问题的代码段。这的确很耗费时间,但却几乎又是不可…

在线的 Web 网站性能测试工具

1) Web Page Test 从世界各地多个地点,使用真正的浏览器(IE和Chrome),并在真正的消费者连接速度,对你的网站进行速度测试。您可以运行简单的测试,或执行多步交易,视频采集,内容封锁和…

网站性能优化实战

转载来源:https://dwz.cn/QsPHj4jk 本文是对之前同名文章的修正,将所有 webpack3 的内容更新为 webpack4,以及加入了笔者近期在公司工作中学习到的自动化思想,对文章内容作了进一步提升。 引 言 对于网站的性能,在行…

Nginx网络架构实战学习笔记(三):nginx gzip压缩提升网站速度、expires缓存提升网站负载、反向代理实现nginx+apache动静分离、nginx实现负载均衡...

文章目录nginx gzip压缩提升网站速度expires缓存提升网站负载反向代理实现nginxapache动静分离nginx实现负载均衡nginx gzip压缩提升网站速度 网页内容的压缩编码与传输速度优化 我们观察news.163.com的头信息 请求: Accept-Encoding:gzip,deflate,sdch响应: Content-Encoding:…

springboot打jar包部署在linux(阿里云)服务器上项目启动成功但页面访问时提示无法访问此网站

项目打jar包放在阿里云服务器上,启动成功,但是页面访问时提示无法访问此网站。 问题分析:项目启动成功说明程序没有问题。无法访问可能是端口的问题。首先检查项目中使用的端口号,再检查阿里云服务器是否开启该端口号。如果阿里云…

mysql 视图 中文_Mysql视图-WEB资讯专栏-DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录....

1.初识视图 1.视图的概念和作用 什么是视图:是从一个或多个表中导出来的表,它是一种虚拟存在的表,表的结构和数据都依赖于基本表。 作用: 简化查询语句:简化用户的查询操作,使1.初识视图1.视图的概念和作用什么是视图:是从一个或多…

适合前端开发者的一些超级实用小工具及网站合集

本篇文章用于像大家分享一些前端开发者必备的一些工具和网站,目前推荐的较少,但会持续更新~也欢迎各位大佬在评论区下留下你觉得前端人员必备的一些工具或网站等。 一、工具 1.Snipaste Snipaste是一个简单但强大的截图工具,可以复制截图&am…

html 文件调用 网站的绝对路径_前端开发入门——HTML基础标签lt;二gt;

本文创建于2020年8月,以下为正文:HTML是用于创建可以从一个平台移植到另一平台的超文本文档的一种简单标记语言,经常用来创建web页面、HTML是制作网页的基础,我们在网络营销种讲的静态网页,就是以HTML为基础制作的网页…

php网站模板文件名,thinkphp5因模板文件名在windows服务器正常在linux服务器报错问题...

最近微构网络接手了一个从其他团队转移过来的一个项目,因为客户之前的服务团队解散了。在交接过程中客户描述了一些问题,其中一个基础问题就是说这个系统只能在windows系统里面运行,而在centos等linux系统中运行不了,直接出现报错…

网课查题公众号/网站制作方法

网课查题公众号/网站制作方法获取api接口复制token,输入自定义id,确认授权即可下载网站查题源码此教程使用的方法可免费实现公众号/网站查题功能 获取api接口 php务必设置成php5.6 否则可能出现查题无响应现象 获取api token地址: 复制tok…

为什么要选择PHP开发网站,PHP有什么优势?

http://www.weeeb.net/c1032.html 在打算开发一个网站时,选择什么语言,是首先需要面对的问题。目前主流的WEB开发语言有ASP.NET、PHP、JSP; 作为MS上世纪老将ASP,就不再提及,如果是因为维护方面的原因而必须使用,可考…

Bootstrap Jetstrap-快速构建你的网站

http://www.iteye.com/topic/1126947 原文地址:Bootstrap & Jetstrap-快速构建你的网站 Boostrap来自于Twitter,是一个基于html,css,javascript的时尚的、直观的、强大的流行前端框架及交互组件集,可用于快速&…

21个免费的UI界面设计工具、资源及网站

本文将介绍一些UI界面与设计使用的元素、软件和网站。内容很丰富,适合用户体验设计师、界面设计师、产品设计师、JS前段开发、手机产品设计以及iPad和平板电脑产品设计等使用。 Lumzy 官方地址:http://www.lumzy.com/ Lumzy是一个网站应用和原型界面制作…

分享实用福利网站

BDY搜 这是一个专注于资源搜索的平台,非常的良心,而且基本上什么类型的资源都有(随便搜索一个“PPT模板”你看看效果,再也不用去公共号集赞领取模板了) 传送地址:http://www.bdyso.com ZD423 超多实用的…

网站数据挖掘与分析:系统方法与商业实践 宋天龙 著

网站数据整合的范畴 网站数据整合的范畴指的是整合的数据范围,从数据在企业中不同的支持作用来看,数据整合范畴包括业务数据整合、IT数据整合和职能数据整合;除了企业内部数据外,还包括 企业外部数据,如市场数据、行业…