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我的简单的理解,谢谢了哈哈
来源:https://blog.csdn.net/weixin_43698739/article/details/99684613