机器学习实战——第二章之改进约会网站的配对效果

news/2024/5/21 21:57:18/文章来源:https://blog.csdn.net/anghua4068/article/details/102266239

三种类型:不喜欢的-1,魅力一般的-2,极具魅力的-3。

样本特征:每年获得的飞行常客里程数,玩视频游戏所耗时间百分比,每周消费的冰淇淋公升数。

 

 1 from numpy import *
 2 import matplotlib
 3 import matplotlib.pyplot as plt
 4 
 5 '''
 6 输入文本文件名字符串,输出训练样本矩阵和类标签向量
 7 '''
 8 def file2matrix(filename):
 9     fr = open(filename)
10     arrayOLines = fr.readlines()  #一次读取整个文件,将文件内容分析成一个行的列表
11     numberOfLines = len(arrayOLines)
12     returnMat = zeros((numberOfLines, 3))
13     classLabelVector = []
14     index = 0
15     for line in arrayOLines:
16         line = line.strip()        #截取掉所有的回车字符
17         listFromLine = line.split('\t')                #将line分割成一个元素列表
18         returnMat[index, :] = listFromLine[0:3]        #选取前3个元素存储到特征矩阵中
19         classLabelVector.append(int(listFromLine[-1]))        #选取最后一个元素进行存储
20         index += 1
21     return returnMat, classLabelVector
22 
23 if __name__ == '__main__':
24     datingDataMat, datingLabels = file2matrix('datingTestSet2.txt')
25     fig = plt.figure()
26     ax = fig.add_subplot(111)
27     ax.scatter(datingDataMat[:,0],datingDataMat[:,1], 20.0*array(datingLabels), 15.0*array(datingLabels))
28     plt.show()

 

 


>>> import numpy as np
>>> np.zeros((3,2))  #3行2列的零矩阵
array([[ 0.,  0.],[ 0.,  0.],[ 0.,  0.]])
ax.scatter(datingDataMat[:,0],datingDataMat[:,1], 20.0*array(datingLabels), 15.0*array(datingLabels))#scatter(x,y,大小,颜色)

 

'''
归一化特征值
newValue = (oldValue - min) / (max - min)
'''
def autoNorm(dataSet):minVals = dataSet.min(0)maxVals = dataSet.max(0)ranges = maxVals - minValsnormDataSet = zeros(shape(dataSet))m = dataSet.shape[0]normDataSet = dataSet - tile(minVals, (m, 1))    #用tile函数将变量内容复制成输入矩阵同样大小的额矩阵normDataSet = normDataSet / tile(ranges, (m, 1))return normDataSet, ranges, minValsif __name__ == '__main__':datingDataMat, datingLabels = file2matrix('datingTestSet2.txt')normMat, ranges, minVals = autoNorm(datingDataMat)fig = plt.figure()ax = fig.add_subplot(111)ax.scatter(normMat[:,0],normMat[:,1], 30.0*array(datingLabels), 100.0*array(datingLabels))plt.xlabel(u'每年获得的飞行常客里程数')plt.ylabel(u'玩视频游戏所耗时间百分比')plt.show()


 1 '''
 2 测试代码。
 3 评估算法的正确率:提供已有样本的90%作为训练样本,而使用其余的10%数据去测试分类器。
 4 错误率 = 错误结果的次数 / 测试数据的总数
 5 '''
 6 def datingClassTest():
 7     hoRatio = 0.10
 8     datingDataMat, datingLabels = file2matrix('datingTestSet2.txt')
 9     normMat, ranges, minVals = autoNorm(datingDataMat)
10     m = normMat.shape[0]
11     numTestVecs = int(m * hoRatio)        #10%的样本数用于测试
12     errorCount = 0    
13     for i in range(numTestVecs):
14         classifierResult = classify0(normMat[i,:], normMat[numTestVecs:m,:], \
15             datingLabels[numTestVecs:m], 20)
16         print "the classifier came back with: %d, the real answer is: %d" \
17             % (classifierResult, datingLabels[i])
18         if (classifierResult != datingLabels[i]): errorCount += 1.0
19     print "the total error rate is: %f" % (errorCount / float(numTestVecs))  #输出错误率
20 
21 if __name__ == '__main__':
22     datingClassTest()

 

 1 '''
 2 输入某个人的信息,给出对对方喜欢程度的预测值
 3 '''
 4 def classifyPerson():
 5     resultList = ['not at all', 'in small doses', 'in large doses']
 6     percentTats = float(raw_input("percentage of time spend playing video games?"))
 7     ffMiles = float(raw_input("frequent flier miles earned per year?"))
 8     iceCream = float(raw_input("liters of ice cream consumed per year?"))
 9     datingDataMat, datingLabels = file2matrix('datingTestSet2.txt')
10     normMat, ranges, minVals = autoNorm(datingDataMat)
11     inArr = array([ffMiles, percentTats, iceCream])
12     classifierResult = classify0((inArr - minVals) / ranges, normMat, datingLabels, 3)
13     print "You will probably like this person: ", resultList[classifierResult - 1]
14 
15 if __name__ == '__main__':
16     classifyPerson()

测试:

1 percentage of time spend playing video games?10
2 frequent flier miles earned per year?10000
3 liters of ice cream consumed per year?0.5
4 You will probably like this person:  in small doses

 

转载于:https://www.cnblogs.com/wjq-Law/p/4193859.html

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

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

相关文章

图像网站下载图片

图像网站下载图片 文章目录 准备工作方法一:方法二: 准备工作 实现从百度图片中下载某一类型的图片 import requests from selenium import webdriver通过webdriver打开浏览器,如果遇到问题可以参考https://blog.csdn.net/weixin_49374896…

婚外情网站的谎言和资料外泄故事 企业该吸取怎样的教训

近日被曝全球最大的偷情网站Ashley Madison已遭黑客组织入侵,黑客宣称已掌握超过3700万已婚外遇男女的个人资料,除非达到他们的要求,否则将公布客户的真实姓名、裸照、信用卡详细资料与“性幻想内容”。Ashley Madison去年曾推出只要支付19美…

高考志愿填报小心钓鱼网站 趋势科技PC-cillin 2012保护学生网上报名无忧

[趋势科技中国]– [2012年5月11日] 细节决定成败,随着高考志愿网上集中填报的来临,针对这一高考关口时间的钓鱼网站和网站木马病毒开始明显增多。全球服务器安全、虚拟化及云计算安全领导厂商趋势科技提醒广大考生和家长,在查看高校网站和填写…

适合做个人博客网站的一套静态页面模板,非常不错哦

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 原文:适合做个人博客网站的一套静态页面模板&#x…

开发多用户注册使用的网站---享元模式

我们在实际项目开发过程中,肯定遇到以下类似的情况:专为小型公司注册并显示的公司信息,提供不同样式的显示方式;我们不会为每个注册的账户的公司都开发出一套量身打造的网站,而且才用共享技术的方式来实现核心技术、其…

大型网站架构系列:负载均衡详解(1)

大型网站架构系列:负载均衡详解(1) 面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等&…

大型网站架构系列:负载均衡详解(3)

大型网站架构系列:负载均衡详解(3) 本次分享大纲 软件负载均衡概述Ngnix负载均衡Lvs负载均衡Haproxy负载均衡本次分享总结 一、软件负载均衡概述 硬件负载均衡性能优越,功能全面,但是价格昂贵,一般适合初期…

大型网站架构系列:负载均衡详解(4)

大型网站架构系列:负载均衡详解(4) 本文是负载均衡详解的第四篇,主要介绍了LVS的三种请求转发模式和八种负载均衡算法,以及Haproxy的特点和负载均衡算法。具体参考文章,详见最后的链接。 三、LVS负载均衡 L…

大型网站架构系列:电商网站架构案例(2)

大型网站架构系列:电商网站架构案例(2) 电网网站架构案例系列的第二篇文章。主要讲解网站架构分析,网站架构优化,业务拆分,应用集群架构,多级缓存,分布式Session。 五、网站架构分析 根据以上预估&#xff…

大型网站架构系列:电商网站架构案例(3)

大型网站架构系列:电商网站架构案例(3) 本文章是电商网站架构案例的第三篇,主要介绍数据库集群,读写分离,分库分表,服务化,消息队列的使用,以及本电商案例的架构总结。 6.5数据库集群&#xff0…

大型网站架构系列:电商网站架构案例(1)

大型网站架构系列:电商网站架构案例(1) 大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功…

大型网站架构系列:分布式消息队列(一)

大型网站架构系列:分布式消息队列(一) 以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享大纲 消息队列概述消息队列…

大型网站架构系列:消息队列(二)

大型网站架构系列:消息队列(二) 本文是大型网站架构系列:消息队列(二),主要分享JMS消息服务,常用消息中间件(Active MQ,Rabbit MQ,Zero MQ&#x…

大型分布式网站架构技术总结

大型分布式网站架构技术总结 本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布…

如何让数据说话! —网站实例分析

数据在很多网站都被看作是衡量一个产品或者一个设计好坏的基本指标之一。数据指标也曾经压的我很长一段时间喘不过气来。但是现在想想确实有时候数据能告诉你很多很多。它未必是衡量产品好坏的唯一标准,但是它也确实能告知你很多。 那么数据究竟能告知我们些什么呢&…

看CSDN博客,用电脑访问其手机版网站——更清爽!

一、效果图对比 A.第一张图为电脑版谋篇博客; B.第二张图为对应手机版博客; ----------------------------------------------------------------------------------------------------------------------------------------------- 对比效果不言而喻&…

爬虫日记之05两种Web请求渲染过程(附图解和网站实例)

爬虫日记之两种Web请求渲染过程 2022-3-5 Part1 首先我们来对两种Web请求过程的概念进行一下区分~ 1.服务器渲染:在服务器那边直接把数据和html整合在一起,统一返回给浏览器 这种方法的好处是在页面代码中能看到数据,且只需要浏览器请求一…

wamp(3.1.0版本)网站根目录的更改及多站点配置

网站根目录的更改: 更改wamp网站根目录的目的:使代码既能被服务器执行,又使代码和wamp安装文件包分离。 需要修改的文件: httpd.conf,httpd-vhosts.conf,wampmanager.ini,wampmanager.tpl 操…

【裁员警告】这是一段让各大电影网站的资料整理人员下岗的代码,用BeautifulSoup+urllib+python爬虫豆瓣top250电影详细信息,哪还需要低效的人力呢?

我们发现很多电影网站的电影信息,和豆瓣网中的电影信息一模一样,连标点符号都分毫不差!!!各大平台的数据维护人员如此严谨敬业有耐心??NO!!他们只是靠爬虫直接把豆瓣里的…

【超详细Django网站开发过程1】服务器的搭建、项目的创建、路由器的配置

WEB系统分为前端和后端,我以往做前端比较多,不喜欢后端密密麻麻的数据处理,活得像个网页美工,十分有耐心,而现在可没这些闲情雅致了…… 一般来讲,各大知名网站的架构师都会亲自参与项目后端的设计开发&…