机器学习实战笔记—KNN

这篇博客详细介绍了机器学习中的KNN算法,包括算法原理、开发过程,并通过一个约会匹配的例子展示了如何使用Python实现KNN。文章还讨论了数据预处理的重要性,如归一化,以及KNN算法的优缺点。
摘要由CSDN通过智能技术生成

基于《机器学习实战-Peter Harrington》的学习笔记,整理学习中的想法,仅作参考
使用python3.8

机器学习

1.分类
在这里插入图片描述

2.机器学习开发步骤

1)收集数据
2)准备输入数据
3)分析输入数据
4)训练算法
5)测试算法
6)使用算法

关于KNN

KNN,k-近邻算法,属于监督学习的一种,采用测量不同特征值之间的距离进行分类:

训练样本集中每个数据都有一个标签,新的无标签数据A输入后,计算A与样本集中每个样本的距离并排序,得到前k名样本的标签,其中出现最多次的将成为A的标签分类。(通常k不大于20)
大概就这个意思,理解为主..
图中样本集有两类点,用红蓝代表其标签分类,设黑色点为输入数据,计算其与样本集中各点的距离并递增排序,设k为6,距离排名前6的点的标签分别为(b,r,b,r,r,r),其中red占多数,由此可以认为黑色点为“红”类。

k-近邻算法开发

依照本书提供的思路:
在这里插入图片描述
KNN算法伪代码:
对输入数据集中的每个点依次进行如下操作:
1)计算当前未知类别的点与样本数据集中每个点之间的距离
2)对距离递增排序
3)选择与当前未知点距离最近的k个点
4)得到这k个点所属类别(标签)出现的频率
5)返回出现频率最高的标签作为当前未知点的分类。

python代码

def classify0(inx,dataSet,labels,k): #inx:要分类的数据(向量) dataset:训练样本集 labels:样本集对应的标签(向量) k:选取前k个 knn
    dataSetSize = dataSet.shape[0]
    diffMat = tile(inx,(dataSetSize,1)) - dataSet
    sqDiffMat = diffMat**2
    sqDistances = sqDiffMat.sum(axis=1)
    distances = sqDistances**0.5
    sortedDistIndicies = distances.argsort()
    classCount ={
   }
    for i in range (k):
        voteIlabel = labels[sortedDistIndicies[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
    sortedClassCount = sorted(clas
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值