KNN算法及KNN的优化算法-加权KNN

KNN算法及KNN的优化算法-加权KNN
afb1KNN及加权KNN优化算法
⽂章⽬录
深度学习的常规套路:
倒写体1.收集数据并给定标签
2.训练⼀个分类
3.测试,评估
K-近邻(KNN)算法:
对于未知类别属性数据集中的点:
1.计算已知类别数据集中的点与当前点的距离
2.按照距离依次排序
3.选取与当前点距离最⼩的K个点
4.确定前K个点所在类别的出现概率
5.返回前K个点出现频率最⾼的类别作为当前点预测分类。
KNN算法:不需要使⽤训练集进⾏训练,训练复杂度为0,KNN分类的计算复杂度和训练集中的⽂档
数⽬成正⽐。如训练集中⽂档总数为n,那么KNN的分类时间复杂度为O(n)。
例:CIFAR-10库采⽤KNN分类:
计算⽅法:
代码部分:
分类效果:
超参数(距离):
欧⽒距离:应⽤勾股定理计算两个点的直线距离。
曼哈顿距离:表⽰两个点在标准坐标系上的绝对轴距之和。调参-训练采⽤交叉验证:
附:KNN算法实例:长沙县黄兴中学
样本数据:
KNN的脚本代码:
粘滞阻尼系数
#!/usr/bin/python
coding=utf-8
>>>>>>>># kNN: k Nearest Neighbors
输⼊:      newInput:(1xN)的待分类向量
dataSet:(NxM)的训练数据集
labels:训练数据集的类别标签向量
k:近邻数
输出:可能性最⼤的分类标签
>>>>>>>># from numpy import*
import operator
青海大学农牧学院
创建⼀个数据集,包含2个类别共4个样本
def createDataSet():
# ⽣成⼀个矩阵,每⾏表⽰⼀个样本
group = array([[1.0,0.9],[1.0,1.0],[0.1,0.2],[0.0,0.1]]) # 4个样本分别所属的类别
labels =['A','A','B','B']
return group, labels
KNN分类算法函数定义
def kNNClassify(newInput, dataSet, labels, k):
numSamples = dataSet.shape[0]# shape[0]表⽰⾏数# # step 1: 计算距离[
# 假如:
# Newinput:[1,0,2]
# Dataset:
# [1,0,1]
# [2,1,3]
# [1,0,2]
# 计算过程即为:
# 1、求差
# [1,0,1]      [1,0,2]
# [1,0,1]      [1,0,2]
# [2,1,3]  --  [1,0,2]
# [1,0,2]      [1,0,2]
# =
# [0,0,-1]
# [1,1,1]
# [0,0,-1]
# 2、对差值平⽅
# [0,0,1]
# [1,1,1]
# [0,0,1]
# 3、将平⽅后的差值累加
# [1]
# [3]
# [1]
# 4、将上⼀步骤的值求开⽅,即得距离
# [1]
特别的爱电影# [1.73]
# [1]
#
# ]
# tile(A, reps): 构造⼀个矩阵,通过A重复reps次得到
# the following copy numSamples rows for dataSet
diff = tile(newInput,(numSamples,1))- dataSet  # 按元素求差值squaredDiff = diff **2# 将差值平⽅
squaredDist =sum(squaredDiff, axis =1)# 按⾏累加distance = squaredDist **0.5# 将差值平⽅和求开⽅,即得距离# # step 2: 对距离排序
# argsort() 返回排序后的索引值
sortedDistIndices = argsort(distance)
classCount ={}# define a dictionary (can be append element) for i in xrange(k):
# # step 3: 选择k个最近邻
voteLabel = labels[sortedDistIndices[i]]
# # step 4: 计算k个最近邻中各类别出现的次数
# when the key voteLabel is not in dictionary classCount, get() # will return 0
classCount[voteLabel]= (voteLabel,0)+1
# # step 5: 返回出现次数最多的类别标签
maxCount =0
for key, value in classCount.items():
if value > maxCount:
maxCount = value
maxIndex = key
return maxIndex
KNN-TEST的测试代码:

本文发布于:2024-09-22 03:56:09,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/326073.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类别   训练   分类
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议