标签:KNN kNN labels 实现 样本 dataset 类别 底层
KNN基础了解
学习KNN
了解KNN
邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。
kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 kNN方法在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。
KNN的基本原理代码
def KNeighborsClassifier(inX,dataset,labels,n_neighbors=5,weights='uniform',p=2):
'''
inX:待测点
dataSet 数据集
labels 数据值对应标签
n_neighbors k取值
weights 权重 uniform 各样本权重相等 distance 按距离加权
'''
'''
计算未知点到所有已知类别点的距离
按距离的递进关系进行排序
选取其中前k个与未知点离得最近的点
统计k个点中各个类别的个数
上述k个点里类别出现频率最高的作为未知点的类别
'''
rows=dataset.shape[0]
difference=np.tile(inX,(rows,1))-dataset
pDinfference=difference**p
sumResult=pDinfference.sum(axis=1)
distances=sumResult**(1/p)
sortedDistanceIndex=distances.argsort()
#print(sortedDistanceIndex)
classCount={}
for i in range(n_neighbors):
votelabel=labels[sortedDistanceIndex[i]]
classCount[votelabel]=classCount.get(votelabel,0)+1
sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
return sortedClassCount[0][0]
这里是我使用的数据集可以看到三个点对应一个值
result=KNeighborsClassifier([40920,8.326976,0.953952],dataset,labels)
print(result)
然后就可以得到你预测的值ps:注意上述的dataset是点的位置labels才是你的点!!
KNN我的简单的理解,谢谢了哈哈
标签:KNN,kNN,labels,实现,样本,dataset,类别,底层 来源: https://blog.csdn.net/weixin_43698739/article/details/99684613
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。