【2】KNN:约会对象分类器
- 不喜欢的
- 有点魅力的
- 很有魅力的
- 每年获得的飞行常客里程数
- 玩网游所消耗的时间比
- 每年消耗的冰淇淋公升数

# ==========================
# 读入文本记录,转换为NumPy,便于其他函数使用
# 输入:文本记录的路径
# ==========================
def file2matrix(filename):
fr = open(filename)
arrayOLines = fr.readlines()
numberOfLines = len(arrayOLines)
returnMat = zeros((numberOfLines, 3))
classLabelVector = []
index = 0
for line in arrayOLines:
line = line.strip() # 删除字符串首尾的空白符(包括'\n', '\r', '\t', ' ')
listFromLines = line.split("\t")
returnMat[index, :] = listFromLines[0:3]
classLabelVector.append(int(listFromLines[-1]))
index += 1
return returnMat, classLabelVector
def plotSca(datingDataMat, datingLabels):
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(121)
# 玩网游所消耗的时间比(横轴)与每年消耗的冰淇淋公升数(纵轴)的散点图
ax1.scatter(datingDataMat[:,1], datingDataMat[:, 2], 15.0*array(datingLabels), 5.0*array(datingLabels))
ax2 = fig.add_subplot(122)
# 每年获得的飞行常客里程数(横轴)与 玩网游所消耗的时间比(纵轴)的散点图
ax2.scatter(datingDataMat[:,0], datingDataMat[:, 1], 15.0*array(datingLabels), 5.0*array(datingLabels))
plt.show()

# =====================================
# 如果不同特征值量级相差太大,
# 而他们在模型中占的权重又并不比其他特征大,
# 这个时候就需要对特征值进行归一化,
# 也就是将取值范围处理为0到1或者-1到1之间
# 本函数就是对数据集归一化特征值
# dataset: 输入数据集
# =====================================
def autoNorm(dataset):
minVals = dataset.min(0)
maxVals = dataset.max(0)
ranges = maxVals - minVals
normDataset = zeros(shape(dataset))
m = dataset.shape[0]
normDataset = dataset - tile(minVals, (m, 1))
normDataset = normDataset/tile(ranges, (m, 1)) # 矩阵中对应数值相除
return normDataset, ranges, minVals
'''
分类器针对约会网站的测试代码
'''
def datingClassTest():
hoRatio = 0.10 # 数据集中用于测试的比例
filePath = "E:\ml\machinelearninginaction\Ch02\datingTestSet2.txt"
datingDataMat, datingLabels = file2matrix(filePath)
# plotSca(datingDataMat, datingLabels)
normMat, ranges, minVals = autoNorm(datingDataMat)
m = normMat.shape[0]
numTestVecs = int(hoRatio*m)
errcounter = 0.0
for i in range(numTestVecs):
classifierResult = classify0(normMat[i, :],
normMat[numTestVecs:m, :],
datingLabels[numTestVecs:m], 3)
print "the classifier came back with: %d, the real answer is: %d" % \
(classifierResult, datingLabels[i])
if (classifierResult !=datingLabels[i]): errcounter +=1.0
print "the total error rate is: %f" % (errcounter/float(numTestVecs))
print errcounter

【2】KNN:约会对象分类器的更多相关文章
- 第二篇:基于K-近邻分类算法的约会对象智能匹配系统
		前言 假如你想到某个在线约会网站寻找约会对象,那么你很可能将该约会网站的所有用户归为三类: 1. 不喜欢的 2. 有点魅力的 3. 很有魅力的 你如何决定某个用户属于上述的哪一类呢?想必你会分析用户的 ... 
- 机器学习实战笔记——KNN约会网站
		''' 机器学习实战——KNN约会网站优化 ''' import operator import numpy as np from numpy import * from matplotlib.fon ... 
- kNN算法实例(约会对象喜好预测和手写识别)
		import numpy as np import operator import random import os def file2matrix(filePath):#从文本中提取特征矩阵和标签 ... 
- 第二节课-Data-driven approach:KNN和线性分类器分类图片
		2017-08-12 1.图片分类是很多CV任务的基础: 2.图片分类要面临很多的问题,比如图片被遮挡,同一种动物有很多种颜色,形状等等,算法需要足够强壮: 3.所以很难直接写出程序来进行图片分类,常 ... 
- kNN#约会网站预测数据
		#约会网站预测数据 def classifyPersion(): resultList = ['not at all','in small doses','in large doses'] #inpu ... 
- k-近邻(KNN)算法改进约会网站的配对效果[Python]
		使用Python实现k-近邻算法的一般流程为: 1.收集数据:提供文本文件 2.准备数据:使用Python解析文本文件,预处理 3.分析数据:可视化处理 4.训练算法:此步骤不适用与k——近邻算法 5 ... 
- 海伦去约会——kNN算法
		下午于屋中闲居,于是翻开<机器学习实战>一书看了看“k-邻近算法”的内容,并学习了一位很厉害的博主Jack Cui的代码,自己照着码了一遍.在此感谢博主Jack Cui的知识分享. 一.k ... 
- kNN分类算法实例1:用kNN改进约会网站的配对效果
		目录 实战内容 用sklearn自带库实现kNN算法分类 将内含非数值型的txt文件转化为csv文件 用sns.lmplot绘图反映几个特征之间的关系 参考资料 @ 实战内容 海伦女士一直使用在线约会 ... 
- KNN算法项目实战——改进约会网站的配对效果
		KNN项目实战——改进约会网站的配对效果 1.项目背景: 海伦女士一直使用在线约会网站寻找适合自己的约会对象.尽管约会网站会推荐不同的人选,但她并不是喜欢每一个人.经过一番总结,她发现自己交往过的人可 ... 
随机推荐
- 微服务世界之Nacos初见
			Nacos 1.概要 Dubbo 服务的注册和发现/rpc通信/负载均衡/限流/熔断/降级 Spring Cloud alibaba 服务注册发现中间件 zookeeper/eureka/consul ... 
- java学习-NIO(四)Selector
			这一节我们将探索选择器(selectors).选择器提供选择执行已经就绪的任务的能力,这使得多元 I/O 成为可能.就像在第一章中描述的那样,就绪选择和多元执行使得单线程能够有效率地同时管理多个 I/ ... 
- 转载 | embed用法(网站中视频、音频的添加)
			网站中添加视频: <embed src="http://player.video.qiyi.com/390cf6c74450e4c70b7bd2d883169914/0/0/w_19r ... 
- go 学习笔记之有意思的变量和不安分的常量
			首先希望学习 Go 语言的爱好者至少拥有其他语言的编程经验,如果是完全零基础的小白用户,本教程可能并不适合阅读或尝试阅读看看,系列笔记的目标是站在其他语言的角度学习新的语言,理解 Go 语言,进而写出 ... 
- 关于JSP页面的静态包含和动态包含
			JSP中有两种包含:静态包含:<%@include file="被包含页面"%> 和 动态包含:<jsp:include page="被包含页面&quo ... 
- 编程杂谈——Non-breaking space
			近日,意外地遇上件不寻常的事情.在解析PDF文件,读取其中内容的时候,对某一文件的处理,始终无法达到预期的效果. 解析方法如下: public void Parse(string value) { i ... 
- Kafka 系列(四)—— Kafka 消费者详解
			一.消费者和消费者群组 在 Kafka 中,消费者通常是消费者群组的一部分,多个消费者群组共同读取同一个主题时,彼此之间互不影响.Kafka 之所以要引入消费者群组这个概念是因为 Kafka 消费者经 ... 
- java120经典面试题
			经典面试题 -----version 1.0 题注:以下答案仅限本人个人见解,若有错误和建议请多多指教.QQ:1807812486 题目来源 1.什么是Java虚拟机?为什么Java被称作是" ... 
- CEF避坑指南(一)——下载并编译第一个示例
			CEF即Chromium Embedded Framework,Chrome浏览器嵌入式框架.它提供了接口供程序员们把Chrome放到自己的程序中.许多大型公司,如网易.腾讯都开始使用CEF进行前端开 ... 
- 如何利用jenkins插件查看allure报告-----完整篇(解决404和无数据问题)
			背景: python3+appium+pytest+allure写了安卓的自动化脚本,在windows本机pycharm上跑通过后生成了allure报告. 公司jenkins搭建在linux服务器上 ... 
