首页 > 编程语言 > 详细

Python机器学习(十三) 最近邻居/k-近邻算法

时间:2020-06-17 19:29:49      阅读:67      评论:0      收藏:0      [点我收藏+]

KNN算法是一种基于实例的学习,或者是局部近似和将所有计算推迟到分类之后的惰性学习。用最近的邻居(k)来预测未知数据点。k 值是预测精度的一个关键因素,无论是分类还是回归,衡量邻居的权重都非常有用,较近邻居的权重比较远邻居的权重大。

KNN 算法的缺点是对数据的局部结构非常敏感。计算量大,需要对数据进行规范化处理,使每个数据点都在相同的范围。

 

 
技术分享图片
ML_Alg_KNN.gif
 
技术分享图片
代码实现:
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier

#digit dataset from sklearn
digits = datasets.load_digits()

#create the  KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=6)

#set training set
x, y = digits.data[:-1], digits.target[:-1]

#train model
clf.fit(x, y)

#predict
y_pred = clf.predict([digits.data[-1]])
y_true = digits.target[-1]

print(y_pred)
print(y_true)
执行结果:
C:\Anaconda3\python.exe "C:\Program Files\JetBrains\PyCharm 2019.1.1\helpers\pydev\pydevconsole.py" --mode=client --port=49329
import sys; print(Python %s on %s % (sys.version, sys.platform))
sys.path.extend([C:\\app\\PycharmProjects, C:/app/PycharmProjects])
Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)]
Type copyright, credits or license for more information
IPython 7.12.0 -- An enhanced Interactive Python. Type ? for help.
PyDev console: using IPython 7.12.0
Python 3.7.6 (default, Jan  8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] on win32
runfile(C:/app/PycharmProjects/ArtificialIntelligence/test.py, wdir=C:/app/PycharmProjects/ArtificialIntelligence)
[8]
8

 

延伸:KNN 的一个缺点是依赖于整个训练数据集,学习向量量化(Learning Vector Quantization,LVQ)是一种监督学习的人神经网络算法,允许你选择训练实例。LVQ 由数据驱动,搜索距离它最近的两个神经元,对于同类神经元采取拉拢,异类神经元采取排斥,最终得到数据的分布模式。如果基于 KNN 可以获得较好的数据集分类效果,利用 LVQ 可以减少存储训练数据集存储规模。典型的学习矢量量化算法有LVQ1、LVQ2和LVQ3,尤以LVQ2的应用最为广泛。


 
技术分享图片

Python机器学习(十三) 最近邻居/k-近邻算法

原文:https://www.cnblogs.com/huanghanyu/p/13153993.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!