《机器学习实战》之k-近邻算法

谦谦君子,陌上其华 谦谦君子,陌上其华     2022-10-14     776

关键词:

看了这本书的第一个算法—k-近邻算法,这个算法总体构造思想是比较简单的,在ACM当中的话就对应了kd树这种结构。首先需要给定训练集,然后给出测试数据,求出训练集中与测试数据最相近的k个数据,根据这k个数据的属性来确定我们测试数据的属性。

书上的例子是给了四个点以及这四个点的标签,分别是A,A,B,B,现在给定一测试点,需要根据这四个训练集来判断该测试点的标签应该是A还是B。

 1 from numpy import *
 2 import operator
 3 
 4 def createDataSet():
 5     group = array([[1.0,1.1], [1.0,1.0], [0,0], [0,0.1]])
 6     labels = ['A', 'A', 'B', 'B']
 7     return group, labels
 8 
 9 def classify0(inX, dataSet, labels, k):
10     dataSetSize = dataSet.shape[0]
11     diffMat = tile(inX, (dataSetSize,1)) - dataSet  #统一矩阵,实现加减
12     sqDiffMat = diffMat**2
13     sqDistances = sqDiffMat.sum(axis=1)  #进行累加,axis=0是按列,axis=1是按行
14     distances = sqDistances**0.5  #开根号
15     sortedDistIndicies = distances.argsort()  #按升序进行排序,返回原下标
16     classCount = {}
17     for i in range(k):
18         voteIlabel = labels[sortedDistIndicies[i]]
19         classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1  #get是字典中的方法,前面是要获得的值,后面是若该值不存在时的默认值
20     sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
    #在python3中没有iteritems,key在这里是按照字典的第二个元素来排序,降序排序
21 return sortedClassCount[0][0] #获得字典中第一对映射中的第一个值 22 23 24 if __name__ == "__main__": 25 dataSet, labels = createDataSet() 26 inX = [0.2, 0.2] 27 print(classify0(inX, dataSet, labels, 2))

 

代码详解:

①array

这是numpy库中,它就是用来构造矩阵的:

1 from numpy import array
2 
3 a = array([[1,1],
4            [2,3]])
5 b = array([[0,1],
6            [3,2]])
7 c = a-b
8 print(c)

 

②tile()函数

tile(A,repes)返回shape = repes的矩阵,每个元素是A

1 from numpy import tile
2 
3 a = [1,2,3]
4 b = tile(a,(2,3))
5 print(b)

③argsort()

按序排列,返回原始下标

1 from numpy import argsort
2 
3 a = [4,3,1,2]
4 b = argsort(a)
5 print(b)

 

《机器学习实战》之k-近邻算法

看了这本书的第一个算法—k-近邻算法,这个算法总体构造思想是比较简单的,在ACM当中的话就对应了kd树这种结构。首先需要给定训练集,然后给出测试数据,求出训练集中与测试数据最相近的k个数据,根据这k个数据的属... 查看详情

《机器学习实战》之k-近邻算法(手写识别系统)

这个玩意和改进约会网站的那个差不多,它是提前把所有数字转换成了32*32像素大小的黑白图,然后转换成字符图(用0,1表示),将所有1024个像素点用一维矩阵保存下来,这样就可以通过knn计算欧几里得距离来得到最接近的答案... 查看详情

机器学习实战之k近邻算法

k近邻算法概述简单地说,K近邻算法采用测量不同特征值之间的距离方法进行分类。优点:精度高、对异常值不敏感、无数据输入假定。缺点:计算复杂度高、空间复杂度高。适用数据范围:数值型和标称型。它的工作原理是:存在一... 查看详情

361机器学习常见算法

K-近邻算法(KNearestNeighbors)参考:机器学习实战教程(一):K-近邻算法(史诗级干货长文)决策树算法(DecisionTree)参考:机器学习实战教程(二):决策树基础篇之让我们从相亲说起参考:机器学习实战教程(三):决策树... 查看详情

《机器学习实战》-k近邻算法(代码片段)

目录K-近邻算法k-近邻算法概述解析和导入数据使用Python导入数据实施kNN分类算法测试分类器使用k-近邻算法改进约会网站的配对效果收集数据准备数据:使用Python解析文本文件分析数据:使用Matplotlib画二维散点图准备数据:归... 查看详情

机器学习实战k-近邻算法

...tp://www.cnblogs.com/lighten/p/7593656.html 1.原理  本章介绍机器学习实战的第一个算法——k近邻算法(k NearestNeighbor),也称为kNN。说到机器学习,一般都认为是很复杂,很高深的内容,但实际上其学习门栏并不算高,具备基... 查看详情

《机器学习实战》之k-近邻算法(改进约会网站的配对效果)

示例背景:我的朋友海伦一直使用在线约会网站寻找合适自己的约会对象。尽管约会网站会推荐不同的人选,但她并不是喜欢每一个人。经过一番总结,她发现曾交往过三种类型的人:(1)不喜欢的人;(2)魅力一般的人;(3... 查看详情

机器学习实战☛k-近邻算法(k-nearestneighbor,knn)(代码片段)

机器学习实战☛k-近邻算法(K-NearestNeighbor,KNN)文章目录机器学习实战☛k-近邻算法(K-NearestNeighbor,KNN)k-近邻算法概述原理简介k-近邻算法一般流程伪代码与实现示例:使用kNN改进约会网站的配对效... 查看详情

《机器学习实战》学习笔记——k近邻算法

1.numpy中一些函数的用法学习shape()用法:shape :tupleofintsTheelementsoftheshapetuplegivethelengthsofthecorrespondingarraydimensions.。  shape返回一个元组,依次为各维度的长度。shape[0]:第一维长度,shape[1]:第二维长度。  tile()用法:numpy.tile 查看详情

机器学习实战笔记--k近邻算法

1#encoding:utf-82fromnumpyimport*3importoperator4importmatplotlib5importmatplotlib.pyplotasplt67fromosimportlistdir89defmakePhoto(returnMat,classLabelVector):#创建散点图10fig=plt.figure()11ax=fig.add_subpl 查看详情

《机器学习实战》读书笔记2:k-近邻(knn)算法

声明:文章是读书笔记,所以必然有大部分内容出自《机器学习实战》。外加个人的理解,另外修改了部分代码,并添加了注释1、什么是K-近邻算法?简单地说,k-近邻算法采用测量不同特征值之间距离的方法进行分类。不恰当... 查看详情

机器学习实战精读--------k-近邻算法

对机器学习实战的课本和代码进行精读,帮助自己进步。#coding:utf-8from numpy import *import operator #运算符模块from os import listdir  #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字... 查看详情

机器学习实战k-近邻算法实施knn分类算法

2.预测数据分类时,出现‘dict’objecthasnoattribute‘iteritems‘如: 最常见的解决办法是更改环境变量顺序如 注意:哪个版本在上面,cmd中的python版本即是谁。如又如:  然后预测数据所在分类即可实现:  查看详情

机器学习实战task1(knn)k近邻算法的应用(代码片段)

...算法的简介k-近邻算法是属于一个非常有效且易于掌握的机器学习算法,简单的说就是采用测量不同特征值之间距离的方法对数据进行分类的一个算法。(2)k近邻算法的工作原理给定一个样本的集合,这里称为训... 查看详情

机器学习实战ch02:k-近邻算法

k-近邻算法算是一个非常暴力也非常好理解的算法(抽象来讲,就是和谁长得像就分为哪一类如何划分长得像还是不像的尺度?把特征值当做坐标,把个体当做线性空间中的离散点,取k个离目标最近的训练集点,进行labelvote,少... 查看详情

《机器学习实战》——k近邻算法

原理:(1)输入点A,输入已知分类的数据集data(2)求A与数据集中每个点的距离,归一化,并排序,选择距离最近的前K个点(3)K个点进行投票,票数最多的分类即为所求优点:简单,可用于非线性分类缺点:当样本不均衡时影响投票... 查看详情

机器学习实战第2章k-近邻算法(k-nearestneighbor,knn)

第2章k-近邻算法<scripttype="text/javascript"src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>KNN概述k-近邻(kNN,k-NearestNeighbor)算法主要是用来进行分类的.KNN场景电影可以按照题材分类,那么如何区分&nbs 查看详情

机器学习实战笔记-k近邻算法2(改进约会网站的配对效果)

案例二.:使用K-近邻算法改进约会网站的配对效果案例分析:海伦收集的数据集有三类特征,分别是每年获得的飞行常客里程数、玩视频游戏所耗时间百分比、每周消费的冰淇淋公升数。我们需要将新数据的每个新数据的每个特... 查看详情