网站正在建设中热,网站建设的源代码,上海大型网站建设公司排名,深圳 服装 网站建设kNN是一种常见的监督学习方法。工作机制简单#xff1a;给定测试样本#xff0c;基于某种距离度量找出训练集中与其最靠近的k各训练样本#xff0c;然后基于这k个“邻居”的信息来进行预测#xff0c;通常#xff0c;在分类任务中可使用“投票法”#xff0c;即选择这k个…kNN是一种常见的监督学习方法。工作机制简单给定测试样本基于某种距离度量找出训练集中与其最靠近的k各训练样本然后基于这k个“邻居”的信息来进行预测通常在分类任务中可使用“投票法”即选择这k个样本中出现最多的类别标记作为预测结果在回归任务中可以使用“平均法”即将这k个样本的实值输出标记的平均值作为预测结果还可以基于距离远近进行加权平均或加权投票距离越近的样本权重越大。[1]kNN的伪代码如下[2]对未知类别属性的数据集中的每个点依次执行以下操作(1)计算已知类别数据集中的点与当前点之间的距离(2)按照距离递增次序排序(3)选取与当前点距离最小的k个点(4)确定前k个点所在类别的出现频率(5)返回前k个点出现频率最高的类别作为当前点的预测分类。以下通过图来进一步解释假定要对紫色的点进行分类现有红绿蓝三个类别。此处以k为7举例即找出到紫色距离最近的7个点。分别找出到紫色距离最近的7个点后我们将这七个点分别称为1、2、3、4、5、6、7号小球。其中红色的有1、3两个小球绿色有2、4、5、6四个小球蓝色有7这一个小球。显然绿色小球的个数最多则紫色小球应当归为绿色小球一类。以下给出利用kNN进行分类任务的最基本的代码。KNN.py文件内定义了kNN算法的主体部分from numpy import *import operatordef createDataSet():group array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0.0, 0.1]])labels [A, A, B, B]return group, labelsdef kNN_Classify(inX, dataSet, labels, k):dataSetSize dataSet.shape[0]diffMat tile(inX, (dataSetSize, 1)) - dataSet#关于tile函数的用法# b[1,3,5]# tile(b,[2,3])#array([[1, 3, 5, 1, 3, 5, 1, 3, 5],# [1, 3, 5, 1, 3, 5, 1, 3, 5]])sqDiffMat diffMat ** 2sqDistances sum(sqDiffMat, axis 1)distances sqDistances ** 0.5# 算距离sortedDistIndicies argsort(distances)#关于argsort函数的用法#argsort函数返回的是数组值从小到大的索引值# x np.array([3, 1, 2])# np.argsort(x)#array([1, 2, 0])classCount {} # 定义一个字典# 选择k个最近邻for i in range(k):voteLabel labels[sortedDistIndicies[i]]# 计算k个最近邻中各类别出现的次数classCount[voteLabel] classCount.get(voteLabel, 0) 1# 返回出现次数最多的类别标签maxCount 0for key, value in classCount.items():if value maxCount:maxCount valuemaxIndex keyreturn maxIndexKNN_TEST.py文件中有两个样例测试。#!/usr/bin/python# codingutf-8import KNNfrom numpy import *# 生成数据集和类别标签dataSet, labels KNN.createDataSet()# 定义一个未知类别的数据testX array([1.2, 1.0])k 3# 调用分类函数对未知数据分类outputLabel KNN.kNN_Classify(testX, dataSet, labels, 3)print(Your input is:, testX, and classified to class: , outputLabel)testX array([0.1, 0.3])outputLabel KNN.kNN_Classify(testX, dataSet, labels, 3)print(Your input is:, testX, and classified to class: , outputLabel)代码输出画图解释一下输出结果参考文献[1]机器学习周志华清华大学出版社2016.[2]机器学习实战Peter Harrington,人民邮电出版社.2019-03-0601:52:08