文章目录
目录
背景
海伦女士一直使用在线约会网站寻找适合自己的约会对象。尽管约会网站会推荐不同的任选,但她并不是喜欢每一个人。经过一番总结,她发现自己交往过的人可以进行如下分类:
- 不喜欢的人
- 魅力一般的人
- 极具魅力的人
海伦收集约会数据已经有了一段时间,她把这些数据存放在文本文件datingTestSet.txt中,每个样本数据占据一行,总共有1000行。
datingTestSet.txt数据下载(数据来源于网络)
海伦收集的样本数据主要包含以下3种特征:
- 每年获得的飞行常客里程数
- 玩视频游戏所消耗时间百分比
- 每周消费的冰淇淋公升数(可能是海伦的个人喜好)
一、准备数据
打开txt文本文件,数据格式如图1.1所示。
图1.1 datingTestSet.txt
在将上述特征数据输入到分类器前,必须将待处理的数据的格式改变为分类器可以接收的格式。将数据分类两部分,即特征矩阵和对应的分类标签向量。在kNN02.py文件中创建名为file2matrix的函数,以此来处理输入格式问题。 将datingTestSet.txt放到与kNN02.py相同目录下,编写代码如下:
import numpy as np
"""
函数说明:打开并解析文件,对数据进行分类:1代表不喜欢,2代表魅力一般,3代表极具魅力
Parameters:
filename - 文件名
Returns:
returnMat - 特征矩阵
classLabelVector - 分类Label向量
"""
def file2matrix(filename):
#打开文件
fr = open(filename)
#读取文件所有内容
arrayO