【机器学习实战-kNN:约会网站约友分类】python3实现-书本知识【2】

本文是对《Peter Harrington - 机器学习实战》一书的学习笔记,详细介绍了如何使用Python实现kNN算法进行约会网站用户的分类。内容包括获取数据、特征缩放、数据分析、kNN算法实现、预测函数以及完整代码展示。文章强调了kNN算法的计算复杂度和内存需求,并提示在分类前进行特征缩放的重要性。
摘要由CSDN通过智能技术生成

说明: 本文内容为【Peter Harrington -机器学习实战】一书的学习总结笔记。


前文:


功能描述:

约会网站约友分类功能:用户输入关注的待约会对象特征信息,程序自动判别该待约会对象属于哪类约会对象,以帮助用户做出是否要与对方约会的决定。

python实例:

如何分类?对用户输入的待约会对象的特征输入集按以下步骤进行分类:

  1. 分析训练集数据(较前文新增项)
  2. 计算未知分类数据与已知分类数据(训练集)中各个点(一条训练集数据)之间的距离
  3. 按照距离递增排序数据;
  4. 选取当前距离最小的k(k可自定义)个点;
  5. 确定前k个点中各个分类数据的概率;
  6. 返回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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值