说明: 本文内容为【Peter Harrington -机器学习实战】一书的学习总结笔记。
前文:
功能描述:
约会网站约友分类功能:用户输入关注的待约会对象特征信息,程序自动判别该待约会对象属于哪类约会对象,以帮助用户做出是否要与对方约会的决定。
python实例:
如何分类?对用户输入的待约会对象的特征输入集按以下步骤进行分类:
- 分析训练集数据(较前文新增项)
- 计算未知分类数据与已知分类数据(训练集)中各个点(一条训练集数据)之间的距离;
- 按照距离递增排序数据;
- 选取当前距离最小的k(k可自定义)个点;
- 确定前k个点中各个分类数据的概率;
- 返回k个点中概率最高的第一个元素index=0的数据作为分类判定数据,进行返回。
一、获取数据
备注:脚本中涉及数据均为《机器学习实战》一书示例数据,数据在网上均可找到。
读取文件分别获取特征及分类数据,需要引入from numpy import * :# 【1】获取数据 def init_data(): # 打开训练集文件 f = open(r"F:\Python\data\kNN\datingTestSet2.txt", "r") rows = f.readlines() lines_number = len(rows) return_mat = zeros((lines_number, 3)) # lines_number行 3列 class_label_vec = [] index = 0 for row in [value.split("\t") for value in rows]: return_mat[index, :] = row[0:3] # 取row前三列 class_label_vec.append(int(row[-1])) # row[-1]取列表最后一列数据 index += 1 # 关闭打开的文件 f.close() return return_mat, class_label_vec
前三列为数据特征:年飞行常客里程数、玩视频耗时百分比、周消耗冰激凌公升数;最后一列为用户对约会对象的已知分类:1 'not at all', 2 'in sma